2016-05-09 8 views
0

私はajaxループと呼んでいます。 ajax responseが正しい順序で取得していますが、正しくはありません。ループの使用中にAjax応答が正しい順序でなくdivで表示されない

最初のdivには最初の応答を、2番目のdivには2番目の応答などを表示する必要がありますが、何も表示されません。しかし私はデータ(応答)を警告しますが、正しいですが正しい順序ではありません。

私のコードは次のとおりです。

function loadanswer(){ 
    var nos = $("#nos").val(); 
    for(var h=0;h<nos;h++){ 

     var lang = $("#hdn_lan_"+h).val(); 
     var filename = $("#hdn_lanfile_"+h).val(); 
     var pv = $("#hdn_pv_"+h).val(); 
     $.post("ajaxCoderun.php", {filename:filename,lang:lang,pv:pv},function(data){ 
      alert(data); 
      $("#ca_"+h).html("<span style='color:green;'>Correct Answer is: <b>"+data+"</b></span>"); 

     }); 
    } 
    } 

    loadanswer(); 

私は私がどのように、どこで、遅延時間を設定することができることを聞きましたか?

解決策を見つけるのを手伝ってください。

+0

あなたが欲しいために、回答に番号を付けることができます:

今、私のコードは次のようになります。その後、javascriptで、応答を順番に並べ替え、並べ替えられた配列に配置します。ソート後に表示します。 – ovaherenow

答えて

1

ajaxリクエストは、デフォルトで非同期です。そういうわけで、あなたは異なる順序で応答を得るのです。

ajaxをsyncronous(推奨しません)に変更するか、1つのリクエストでデータ全体を取得して応答をループすることができます。

これはsyncronious要求の設定次のようになります。

$.ajax({ 
url:'yoururl', 
type:'post', 
data:{a:a,b:b}, 
async:false 
}) 
0

使用async:false

はあなたのループ内で再帰を使用しようとしたことがありますか?このソリューションを使用すると、新しいリクエストを開始する前にレスポンスを待つことができるため、最終的な注文が正しいはずです。私はhforループ変数である新しいパラメータ、hajaxにページを、合格

loadanswer(); 

function loadanswer(nos, h) { 

     if (typeof nos === typeof undefined) { 
      nos = $('#nos').val(); 
      h = 0; 
     } 

     var lang = $("#hdn_lan_"+h).val(); 
     var filename = $("#hdn_lanfile_"+h).val(); 
     var pv = $("#hdn_pv_"+h).val(); 
     $.post("ajaxCoderun.php", {filename:filename,lang:lang,pv:pv},function(data){ 
      alert(data); 
      $("#ca_"+h).html("<span style='color:green;'>Correct Answer is: <b>"+data+"</b></span>"); 
      if (h < nos) { 
       loadanswer(nos, h++); 
      } 

     }); 
    } 
    } 
0

よう

$.ajax({ 
     type: "POST", 
     url: remote_url, 
     data: postData, 
     async: false, 
     success : function(data) { 
      remote = data; 
     } 
    }); 
0

は最後に解決策を得ました。 ajaxCoderun.phpページ結果と共に新しい変数を追加します。そのような表情:

$num = $_POST['num']; 

echo $result."^".$num; 

とjQueryのページに、私は、データを分割し、divの対応に結果を設定します。

function loadanswer(){ 
    var nos = $("#nos").val(); 
    var res = ""; 
    for(var h=0;h<nos;h++){ 

     var lang = $("#hdn_lan_"+h).val(); 
     var filename = $("#hdn_lanfile_"+h).val(); 
     var pv = $("#hdn_pv_"+h).val(); 
     //alert(lang+" & "+ filename +" & "+pv); 
     $.post("ajaxCoderun.php", {filename:filename,lang:lang,pv:pv,num:h},function(data){ 
      //alert(data); 
      var dataArray = data.split("^"); 
      $("#ca_"+dataArray[1]).html("<span style='color:green;'>Correct Answer is: <b>"+dataArray[0]+"</b></span>"); 

     }); 
    } 
    } 
    loadanswer(); 
関連する問題