连续的,不是并发的jQuery AJAX帖子

时间:2009-02-16 18:52:50

标签: jquery ajax post

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

2 个答案:

答案 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结束。