每个循环有多个 ajax php 请求

multiple ajax php requests with each loop

我有这个代码: 它在一些 if 查询之后出现,并且效果很好。 第一个 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);