У меня есть этот код:
Он приходит после некоторых запросов, и это работает отлично.
Первый ajax-запрос также работает нормально, но после каждого цикла второй запрос выполняться не будет.
ИДК почему, надеюсь, у кого-то есть решение.
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);
}
});
var item_id;
var item_name;
Эти переменные, похоже, не определены для второго вызова ajax. И помните, что javascript является асинхронным, он не будет ждать завершения вашего первого вызова ajax, прежде чем вызовет второй. Если вам нужно, чтобы это произошло, взгляните на отложенные объекты jquery.
Вы должны создать функцию цикла следующим образом:
$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);