2016-06-14 7 views
1

私はこのコードを持っています: これはいくつかのquerysの後に来て、これは完全に動作します。 最初のajaxリクエストも正常に機能しますが、各ループの後で2番目のリクエストは実行されません。 なぜ、うまくいけば誰かが解決策を持っている。各ループに複数のajax PHPリクエストがあります

     alert("success");    // Everything is OK 
         $(".nrlist-create_item-select").each(function() { 
          var item_id = $(this).attr('id'); 
          var item_name = $(this).attr('title'); 

          $.ajax({ 
           type: "POST", 
           url: "games/create-nr_vs_nr-update.php", 
           datatype: "text", 
           data: {item_id: item_id, item_name: item_name, nrlistcreatenumber: nrlistcreatenumber, nrlistcreatetime: nrlistcreatetime}, 
           success: function(data) { 
            alert(data); 
            requestCallback.requestComplete(true); 
           } 
          }); 

          return true; 
         }); 

         $.ajax({ 
          type: "POST", 
          url: "games/create-nr_vs_nr-insert.php", 
          datatype: "text", 
          data: {item_id: item_id, item_name: item_name, nrlistcreatenumber: nrlistcreatenumber, nrlistcreatetime: nrlistcreatetime}, 
          success: function(data) { 
           alert(data); 
           requestCallback.requestComplete(true); 
          } 
         }); 

答えて

3
var item_id; 
var item_name; 

これらの変数は、第二のAJAX呼び出しのために定義されていないようです。 JavaScriptが非同期であることを覚えておいてください。最初のAjax呼び出しが完了するのを待たずに2番目の呼び出しが呼び出されます。これが必要な場合は、jquery defferedオブジェクトを見てください。

+1

Thxを、私はグローバル変数を設定するのを忘れてましたが、私はちょうど、各機能にVARを削除する必要がありました! – VeloFX

+0

@VeloFX - 問題はありませんが、varを削除して、それらの変数をグローバルにすることに注意してください。 –

0

あなたは、このようなループ機能を作成する必要があります。

$ajaxsend=function(data,$arrayitems,url,total,ini){ 
    $.ajax({ 
     type: "POST", 
     url: url, 
     datatype: "text", 
     data: data, 
     success: function(data) { 
      console.log(data); 
      //requestCallback.requestComplete(true); 
      //ini increment each loop 
      ini+=1; 
      //validate loop while total is > than ini 
      if(total > ini){ 
       data = {item_id: $arrayitems[ini].item_id, item_name: $arrayitems[ini].item_name, nrlistcreatenumber: nrlistcreatenumber, nrlistcreatetime: nrlistcreatetime}; 
       //resend ajax call 
       $ajaxsend(data,$arrayitems,url,total,ini); 
      } 
     } 
    }); 
}; 
var $arrayitems = []; 
$(".nrlist-create_item-select").each(function() { 
    var item_id = $(this).attr('id'); 
    var item_name = $(this).attr('title'); 
    //save items in array 
    $arrayitems.push({"item_id":item_id,"item_name":item_name}); 
    //return true; 
}); 
//initial 
var ini = 0; 
//total items 
var total = $arrayitems.length; 
//data 
var data = {item_id: $arrayitems[ini].item_id, item_name: $arrayitems[ini].item_name, nrlistcreatenumber: nrlistcreatenumber, nrlistcreatetime: nrlistcreatetime}; 
//ajax for loop function 
$ajaxsend(data,$arrayitems,'games/create-nr_vs_nr-update.php',total,ini); 
関連する問題