AJAX循环在下一个开始之前没有完成第一个请求

时间:2015-12-20 12:18:23

标签: jquery ajax

我正在尝试创建一个循环遍历表中所有输入的简单脚本,并为每个值大于1的请求提交AJAX GET请求。出于某种原因,我的脚本似乎永远无法成功完成所有AJAX请求。我知道如果我在AJAX请求上设置async: false,它会成功,但这不是最佳做法,也会降低浏览器的速度。

任何想法如何解决这个问题?我搜遍了所有,找到了许多相关的答案,但无法设法修复脚本。

$('#OrderSubmit').click(function() {
    $('.OrderForm').find('.pid-input').each(function(j, element) {
        qty = $(element).val();
        if (qty > 0) {
            pid = $(element).data("pid");
            $.ajax({ 
                url: "/cart.php?action=add&product_id=" + pid + "&qty=" + qty 
            });
        }
    });
});

1 个答案:

答案 0 :(得分:0)

您的代码似乎很好。
可能是你在循环中发送请求。从服务器端,可能存在来自一个客户端的后续请求的限制。
它可能因为只需连续发送请求就可以使服务器崩溃或降低服务质量。
如果满足服务器,请尝试给出几毫秒的超时。

$('#OrderSubmit').click(function() {
var i=0;
$('.OrderForm').find('.pid-input').each(function(j, element) {
    qty = $(element).val();
    if (qty > 0) {

        i++;
        pid = $(element).data("pid");
        setTimeout(function(pid,qty)
          {
      $.ajax({ 
            url: "/cart.php?action=add&product_id=" + pid + "&qty=" + qty 
        });
          }.bind({},pid,qty),i*1000);

    }
});
});