2016-06-14 2 views
1

이 코드를 얻었습니다 : querys가 있으면이 함수는 완벽하게 작동합니다. 첫 번째 아약스 요청도 잘 작동하지만 두 번째 요청은 실행되지 않습니다. 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; 

이 변수 두 번째 아약스 호출에 대해 정의하지 않는 것. 그리고 자바 스크립트가 비동기임을 기억하자. 첫 번째 아약스 호출이 완료되기를 기다리지 않고 두 번째 호출을 기다린다. 이 일이 필요하면 jquery deffered objects를보십시오.

+1

들으, 난 전역 변수를 설정하는 것을 잊었다 한, 난 그냥 각 기능의 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);