2012-04-18 8 views
1

私は、次のコードを持っている:あなたがここに見ることができるように、私は2つの機能init()add(..)を持って

<script language="javascript"> 
function add(idautomobile,marque,model,couleur,type,puissance,GPS){ 

$("#notification").ajaxStart(function(){ 
    $(this).empty().append("<center><br/><img src='img/ajax-loader.gif'></center>"); 
}); 



     $.ajax({ 
      type: "POST", 
      url: "ajoutAutomobile", 
      data: {idautomobile1:idautomobile,marque: marque,model:model,couleur:couleur,type:type,puissance:puissance,GPS:GPS}, 
      error: function(xhr, ajaxOptions, thrownError){ $("#notification").empty().append("* Erreur Serveur Veillez rééssayer plus tard cause: "+thrownError).addClass("error"); } , 
      success: function(retour){ 
      $("#notification").empty().append(retour).removeClass("error").addClass("success"); 
        } 
      }); 

    } 
    else{ 
    $("#notification").empty().append("* Vérifiez les types de données").addClass("error"); 
     } 

    } 

function init(){ 

    $("#GPSs").ajaxStart(function(){ 
    $(this).empty().append("<center><br/><img src='img/ajax-loader.gif'></center>"); 
});  
    $.ajax({ 
     type:"GET", 
     url: "selectImei" , 
     error: function(xhr, ajaxOptions, thrownError){ $("#notification").empty().append("* Erreur Serveur Veillez rééssayer plus tard cause: "+thrownError).addClass("error"); } , 
     success: function(retour){ 
      $("#GPSs").empty().append(retour) 
        } 
      }); 
    } 
</script> 

を: のinit()ページがロードされたときにそのcolled:

<body onload="init()"> 

と、ボタンがクリックされたとき(..)を追加:

<input type="button" value="Ajouter Automobile" OnClick="add(idautomobile.value,marque.value,model.value,couleur.value,type.value,puissance.value,GPS.value)"> 

Iは、GIF(ローダ)がadd(...)関数でAJAX要求中<div id="notification">で示さ製:

$("#notification").ajaxStart(function(){ 
    $(this).empty().append("<center><br/><img src='img/ajax-loader.gif'></center>"); 
}); 

同一のinit()関数(データベースからオプションで<select>を初期化する)において

$("#GPSs").ajaxStart(function(){ 
    $(this).empty().append("<center><br/><img src='img/ajax-loader.gif'></center>"); 
}); 

すべてがうまく動作し、 "ajax-loader.gif"が<div id="GPSs">にロードされた場合、応答を受け取ったときにレンダリングされたselect with optionsが表示されます。

問題は、私はアドオンを呼び出すとき(..)画像「AJAX-loader.gif」を機能していることは<div id="GPSs">に再びロードされている...

最初のページがロードされ、機能init()が呼び出されます:AJAXリクエストが終了すると、オプションはデータベースから取得され enter image description here

その後、<div id="GPSs">に示した: enter image description here

私は、ボタン上の画像をクリックする問題再び表示されます: enter image description here

解決策はありますか?

全コード

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 

     <title>Ajout automobile</title> 
     <%@include file="includes/head.html" %> 
     <script language="javascript"> 
function add(idautomobile,marque,model,couleur,type,puissance,GPS){ 

$("#notification").ajaxStart(function(){ 
    $(this).empty().append("<center><br/><img src='img/ajax-loader.gif'></center>"); 
}); 


     select = document.getElementById("type"); 
     type = select.options[select.selectedIndex].value; 
     select2 = document.getElementById("GPS"); 
     GPS = select2.options[select2.selectedIndex].value; 
     Vidautomobile=document.getElementById('idautomobile').validity.valid; 
     Vmarque=document.getElementById('marque').validity.valid; 
     Vmodel=document.getElementById('model').validity.valid; 
     Vcouleur=document.getElementById('couleur').validity.valid; 
     Vtype=document.getElementById('type').validity.valid; 
     Vpuissance=document.getElementById('puissance').validity.valid; 
     VGPS=document.getElementById('GPS').validity.valid; 

if(Vidautomobile&&Vmarque&&Vmodel&&Vcouleur&&Vtype&&Vpuissance&&VGPS) 
{ 
     $.ajax({ 
      type: "POST", 
      url: "ajoutAutomobile", 
      data: {idautomobile1:idautomobile,marque: marque,model:model,couleur:couleur,type:type,puissance:puissance,GPS:GPS}, 
      error: function(xhr, ajaxOptions, thrownError){ $("#notification").empty().append("* Erreur Serveur Veillez rééssayer plus tard cause: "+thrownError).addClass("error"); } , 
      success: function(retour){ 
      $("#notification").empty().append(retour).removeClass("error").addClass("success"); 
        } 
      }); 

    } 
    else{ 
    $("#notification").empty().append("* Vérifiez les types de données").addClass("error"); 
     } 

    } 

function init(){ 

    $("#GPSs").ajaxStart(function(){ 
    $(this).empty().append("<center><br/><img src='img/ajax-loader.gif'></center>"); 
});  
    $.ajax({ 
     type:"GET", 
     url: "selectImei" , 
     error: function(xhr, ajaxOptions, thrownError){ $("#notification").empty().append("* Erreur Serveur Veillez rééssayer plus tard cause: "+thrownError).addClass("error"); } , 
     success: function(retour){ 
      $("#GPSs").empty().append(retour) 
        } 
      }); 
    } 
</script> 
    </head> 
    <body onload="init()"> 
     <%@include file="includes/header.html" %> 


<div id="notification"><!-- zone de notification --> 

</div> 
<!-- Le contenu --> 
    <div id="content">  
    <form name="f"> 
     <table> 
     <tr> 
      <td><b><i>Immatricule</i></b> </td> 
      <td><input type="text" pattern="\w{5,30}" required placeholder="Immaticule" name="idautomobile" id="idautomobile"></td> 
     </tr> 

     <tr> 
      <td> <b><i>Marque</i></b></td> 
      <td> <input type="text" required placeholder="Marque" name="marque" id="marque"></td> 
     </tr> 

     <tr>  
      <td><b><i>Model</i></b> </td> 
      <td><input type="text" pattern="\w{3,30}" required placeholder="Model" name="model" id="model"></td> 
     </tr> 
     <tr> 
      <td><b><i>Couleur</i></b> </td> 
      <td> <input type="text" pattern="\w{3,30}" required placeholder="Couleur" name="couleur" id="couleur"></td> 
     </tr> 

     <tr> 
      <td> <b><i>type</i></b> </td> 
      <td><select name="type" id="type"> 
      <option value="voiture" >Voiture </option> 
      <option value="camion" >Camion </option> 
       </select> </td> 
     </tr> 

      <tr> 
      <td><b><i>Puissance</i></b> </td> 
      <td> <input type="text" pattern="\d{1}" required placeholder="Puissance" name="puissance" id="puissance"></td> 
     </tr> 

     <tr> 
      <td><b><i>GPS</i></b></td> 
      <td id="GPSs"></td> 
     </tr> 

    </table> 
    <input type="button" value="Ajouter Automobile" OnClick="add(idautomobile.value,marque.value,model.value,couleur.value,type.value,puissance.value,GPS.value)"> 



</form> 

     </div> 
    <!-- iclure le footer--> 
<%@include file="includes/footer.html" %> 
<!-- fin iclure-->  
    </body> 
</html> 
+3

完全なコードを投稿すると、お手伝いできます。しかし、今のところ、 'if'ステートメントの一部が含まれています。 – Tim

+0

完全なコードが追加されました。 –

答えて

2

あなたが二回.ajaxStart()を呼んでいるので、それはあなたが二AJAXコール(仮定なしがすでに実行されている)を開始するとき、両方が呼び出され得るだろう意味があります。何をする必要がありますすることは、最初のAJAX呼び出しが完了すると、そのように、#GPSs要素にアタッチajaxStartイベントハンドラをバインド解除、次のとおりです。

$('#GPSs').off('ajaxStart'); 

jQueryの1.7で導入された.off()機能を、使用していること。以前のバージョンを使用している場合は、代わりに.unbind()を使用してください。

+0

はうまく動作します!ありがとう。 –

関連する問題