我有兩個ajax調用不能在一個調用中完成。當第一個Ajax調用開始時,第二個Ajax調用可以立即開始,或者當用戶按下發送按鈕時。如果第二個Ajax調用開始,他必須等待第一個Ajax調用的響應,因爲他需要來自它的數據。Ajax呼叫等待另一個Ajax呼叫的響應?
如何才能實現第二個Ajax調用只有在第一個Ajax調用的響應到達後才發送他的請求?
- 是否有另一種方法比setTimeout?
- 我可以以某種方式在ajax調用1上註冊ajax調用2的監聽器嗎?
我的代碼是:
var xhrUploadComplete = false;
// ajax call 1
$.ajax({
url: url,
type: "POST",
data: formdata,
processData: false,
contentType: false,
complete: function(response) {
var returnedResponse = JSON.parse(response.responseText);
xhrUploadComplete = true;
}
});
// ajax call 2
if (xhrUploadComplete) {
$.ajax({
url: url2,
type: "POST",
data: formdata2,
processData: false,
contentType: false,
complete: function(response) {
...
}
});
}
編輯:第二個AJAX調用不能在第一次調用的()完成或完成()上公佈,因爲這取決於用戶的選擇來發送最終形式。這兩步過程的目的是在用戶將其插入輸入類型=文件後,將圖像發送到服務器。
編輯:在知道我不能的if(..),因爲這是一個異步調用。我寫了它來明確我需要做什麼。我想我需要Java中的未來。
難道你不是已經註冊了第一個Ajax調用的結果的監聽器嗎?請告訴我們你的代碼。 – Bergi
@Bergi我發佈了代碼 – confile
「如果第二個Ajax調用啓動,他必須等待第一個Ajax的響應=>這沒有任何意義,如果它必須等待,那麼它不能啓動... – Christophe