[英]JQuery Multiple AJAX call
請參考下面的代碼,我已經將兩個ajax都設置為async:false。 我發現,當函數調用doUpdate2ndAJAX()時,程序開始執行$(“。search”)。click();。 即使doUpdate2ndAJAX()尚未完成執行。
在當前情況下:1. doUpdate2ndAJAX()執行2. doUpdate2ndAJAX()尚未完成,開始執行$(“。search”)。click()3. doUpdate2ndAJAX()完成執行並返回響應
我可以知道如何做到這一點嗎?1. doUpdate2ndAJAX()執行2. doUpdate2ndAJAX()完成執行並返回響應3.調用$(“。search”)。click();。
[按順序執行]
謝謝。 -fsloke
firstCalled: function() {
$.ajax({
url: "XXX",
async: false,
success: function(response) {
doUpdate2ndAJAX();
$(".search").click();
}
});
}
function doUpdate2ndAJAX(){
$.ajax({
url: "YYY",
async: false,
success: function(response) {
// UPDATE SOMETHING
}
});
return false;
}
使用Deferred對象,這些是操縱異步調用的對象,可以解決:
$.when($.ajax("/page1.php"), $.ajax("/page2.php"))
.then(myFunc, myFailure);
這樣,myFunc會在執行2個ajax調用后執行,如果其中一個有錯誤,則執行myFailure。
您可以在jquery官方文檔中了解有關它的更多信息: JQuery Deferred Object
您應該使AJAX調用異步,然后調用$(".search").click();
在第二個請求的success
回調中。
根據您的結構,您可能想要向doUpdate2ndAJAX
添加參數,該參數告訴它是否調用$(".search").click();
。
或者,您可以添加一個回調參數。
我建議使用“ complete”回調來調用$(“。search”)。click()。
您可以在此處查看成功和完整回調之間的區別: http : //api.jquery.com/jQuery.ajax/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.