2

我可能遗漏了一些明显的东西,但我似乎无法让我的 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()是在完成之前返回?避免这种情况的最佳方法是什么?

4

2 回答 2

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>');
        }
    });
});
于 2009-02-16T18:55:43.743 回答
2

AJAX 是异步的。fetch.php可能正在调用sleep,但 JavaScript 以异步模式工作,不会等待您sleep结束。

于 2009-02-16T18:56:31.043 回答