【问题标题】:consecutive, not concurrent jQuery AJAX posts连续的,非并发的 jQuery AJAX 帖子
【发布时间】:2009-02-16 18:52:49
【问题描述】:

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

【问题讨论】:

    标签: jquery ajax post


    【解决方案1】:

    尝试将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>');
            }
        });
    });
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-10-17
        • 2018-04-10
        • 2012-05-15
        • 1970-01-01
        • 2014-07-06
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        相关资源
        最近更新 更多