我可能错过了一些明显的东西,但我似乎无法让我的AJAX帖子连续运行而不是与jQuery同时运行。
ad_numbers
是一个数字ID数组。
$(ad_numbers).each(function() {
ad_number = $.trim(this);
if(!ad_number) { return true; }
$.post('/fetch.php', { ad_number: ad_number }, function(data, textStatus) {
$('#log').prepend('<p>' + data + '</p>');
});
});
在fetch.php
中,我已经拥有它sleep(2)
所以我可以确保它正常工作。它似乎是在同时运行所有这些广告号码,而不是等待第一个POST在继续执行数组中的下一个广告号之前完成。
我猜测$.post()
在完成之前正在返回?避免这种情况的最佳方法是什么?
答案 0 :(得分:7)
尝试将async: false
添加到您的选项中。
$(ad_numbers).each(function() {
ad_number = $.trim(this);
if(!ad_number) { return true; }
$.ajax({
type: 'POST',
url: '/fetch.php',
data: {ad_number: ad_number},
async: false,
success: function(data, textStatus) {
$('#log').prepend('<p>' + data + '</p>');
}
});
});
答案 1 :(得分:2)
AJAX是异步的。 fetch.php
可能正在调用sleep
,但JavaScript以异步模式运行,并且不会等待sleep
结束。