我有一個JavaScript函數,它使用jQuery創建兩個連續的Ajax請求。我想確保第一個請求在第二個函數被調用之前已經加載。有什麼辦法可以做到這一點?確保第一個Ajax函數在第二個之前完成
回答
可以在$.ajax
選項中指定async: false
,或者在complete
第一次調用回調中進行第二次ajax調用。
這不是'async:false'嗎? – 2010-01-04 23:31:13
的確如此。補充負面的邏輯。 – 2010-01-04 23:32:28
'async:false'很好。我稱這兩個函數的順序不同,所以它比回調方法更受歡迎。 – Brian 2010-01-04 23:38:42
在第一個函數的回調中,進行第二次調用。
爲了獲得最佳效果,您應該調用第一個回調函數中的第二個函數。
例如:
$.post("http://www.somewebsite.com/page.php", function(data) {
// whatever
function2();
});
$.post("script1.php", {data:"val"}, function(response) {
$.post("script2.php", {data:response}, function(results) {
// this second call will be initialized when the first finishes
});
});
示例實現:
function callback() {$('div#second_ajax_output').load('http://www.google.com');}
$('div#first_ajax_output').load('http://www.yahoo.com',callback);
編輯:誤讀的問題;我的錯。如果您想要同時執行兩個AJAX請求,但只有在完成後才執行回調,這就是您的做法!
試試這個:
var completedCount = 0;
var callback = function()
{
completedCount++;
if (completedCount == 2)
{
// Do something.
}
};
$.post('url-1', {}, callback);
$.post('url-2', {}, callback);
使用jQuery最簡單的方法是這樣的:
$.ajax({
type: "POST",
url: "some.php",
success: function(msg){
$.ajax({
type: "POST",
url: "some2.php",
success: function(msg){
alert("End of second call");
}
});
}
});
簡單的方法就是給第二個請求時,第一個返回(在完成回調)。
如果您需要更復雜的方法,請查看AjaxQueue插件。你可以用這種方式排隊請求。
- 1. 第二個函數在第一個完成之前啓動,Javascript
- 2. 如何在執行第二個函數之前等待第一個函數完成執行?
- 3. 當第一個調用完成後,觸發第二個ajax函數
- 4. Coffeescript在第一個完成執行之前運行第二個功能
- 5. 完成第一個阿賈克斯之前發射第二,完成第二個阿賈克斯之前發射第三個阿賈克斯內循環
- 6. 有兩個即刻完成的代碼可能會在第一行完成之前完成第二行嗎?
- 7. 在完成第一個SoundEffect後播放第二個SoundEffect
- 8. Flexbox在第二個孩子之前捨棄第一個孩子
- 9. 如何在完成第一個JavaScript之後執行第二個回調?
- 10. 等待異步:如何在第二個啓動之前完成一個方法
- 11. .NET在第一個成功之後創建第二個Ajax調用
- 12. 一個函數在另一個函數完成之前加載
- 13. 開始第二個JavaScript時,第一個完成
- 14. 如何讓第二個GUI等到第一個完成?
- 15. 完成第一個活動後開始第二個活動
- 16. 如何確保一個佐賀完成之前完成?
- 17. 將第二個td移到第一個td之前
- 18. 第二個AJAX函數沒有觸發
- 19. 遞歸調用ajax函數,直到第一個ajax函數完成
- 20. 第二次點擊第一次動畫完成回調函數
- 21. JavaScript在第一次完成前執行第二行代碼
- 22. 第二次硒測試在第一次測試完成之前開始
- 23. jQuery的第一個Ajax函數調用完全完成後繼續另一個Ajax函數
- 24. 第二個jQuery.post請求在第一個之前完成。如何避免這種情況?
- 25. zsh自動完成,基於第一個參數的第二個參數
- 26. 第一個函數完成時執行第二個函數W/O回調參數
- 27. 保持第二個窗口在前面
- 28. 如何在第二個完成時運行一個異步函數?
- 29. 在一個jquery函數中,只調用第二個函數一個函數第一個函數返回結果
- 30. 獲取第二個AJAX調用響應之前的AJAX調用
它是需要等到第一個返回的第二個* Ajax *調用,還是需要等待的第二個*回調*? (也就是說,你是否需要在發出第二個Ajax請求之前等待,或者兩者都可以一個接一個地被觸發,但是你想確保如果第二個Ajax請求首先返回,它的回調將被阻止,直到第一個返回) – Graza 2010-01-04 23:34:54
第二個函數在第一個函數完成之前不應該被觸發。第一個函數創建一個表單元素,第二個函數獲取該表單的值並根據它進行一些計算。 – Brian 2010-01-04 23:43:33