我正在尝试创建一个循环遍历表中所有输入的简单脚本,并为每个值大于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
});
}
});
});
答案 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);
}
});
});