2009-02-16 32 views
2

我可能錯過了一些明顯的東西,但我似乎無法讓我的AJAX帖子連續運行而不是與jQuery同時運行。連續的,不是併發的jQuery AJAX帖子

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()在它完成之前返回嗎?避免這種情況的最好方法是什麼?

回答

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>'); 
     } 
    }); 
}); 
+0

非常感謝。 :-) – ceejayoz 2009-02-16 19:00:05

2

AJAX是異步的。 fetch.php可能正在調用sleep,但JavaScript以異步模式工作,並且不會等待sleep結束。