2016-06-14 30 views
1

我有這樣的代碼: 它後來一些如果querys和這個作品完美。 第一個Ajax請求也很好,但在每個循環之後第二個請求不會被執行。 Idk爲什麼,希望有人有解決方案。多個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調用完成,然後再調用第二個Ajax調用。如果你需要這種事情發生,看看jQuery的緩存對象。

+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);