【问题标题】:multiple ajax php requests with each loop每个循环的多个 ajax php 请求
【发布时间】:2016-10-15 16:55:54
【问题描述】:

我有这个代码: 它出现在一些 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);
                            }
                        });

【问题讨论】:

    标签: php jquery ajax request each


    【解决方案1】:
    var item_id;
    var item_name;
    

    似乎没有为第二个 ajax 调用定义这些变量。请记住,javascript 是异步的,它不会在调用第二个之前等待您的第一个 ajax 调用完成。如果您需要这样做,请查看 jquery defered objects。

    【讨论】:

    • 谢谢,我忘了设置全局变量,我只需要删除每个函数中的 var!
    • @VeloFX - 没问题,请注意,删除 var 会使这些变量成为全局变量。
    【解决方案2】:

    你必须像这样创建一个循环函数:

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

    【讨论】:

      猜你喜欢
      • 2019-03-24
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      相关资源
      最近更新 更多