我有一個運行2個AJAX調用的腳本,這是第一次檢查數據庫中是否存在記錄。如果是這樣,則不應該繼續,腳本應該停止。第二個提交工作。在繼續使用腳本之前等待AJAX響應
我的問題是,在第一次AJAX調用返回之前,該作業正在提交。我的代碼看起來是這樣的:
if (recordid) {
var request = $.ajax({
context: document.body,
url: URLGOESHERE,
data: {
recordID: recordid
},
success: function(data){
if (data.Response == "Success") {
var noresults = data.Results;
if (noresults > 0){
alert('this record id already exists!');
return false;
}
} else {
alert('an error occured');
return false;
}
}
});
} else {
alert('enter a record id');
return false;
}
// second ajax call goes here, which gets called regardless of the output of the ajax call above
這是因爲請求是異步的。將第二個AJAX調用*放入第一個調用的'success'處理程序中。還要注意,在'success'處理程序中使用'return'是多餘的。 –
爲你的'$ .ajax'添加參數'async:false',或者,更好的辦法是將第二個請求放在'success'回調中。 – eisbehr
@eisbehr不,永遠不要這樣做。 'async:false'是*難以置信的*糟糕的做法。當請求正在進行時,它會阻止UI線程表單更新,這使得它看起來像瀏覽器崩潰了。這是大多數瀏覽器現在拋出關於其使用的控制檯警告的原因。 –