function foo(arg, ajaxcomplete) {
$.ajax({
//ajaxcall...
success: function() {
//set ajaxcomplete to true
}
}
有什麼辦法可以做類似的事情知道ajaxcall在函數中完成了嗎?謝謝Javascript out功能
function foo(arg, ajaxcomplete) {
$.ajax({
//ajaxcall...
success: function() {
//set ajaxcomplete to true
}
}
有什麼辦法可以做類似的事情知道ajaxcall在函數中完成了嗎?謝謝Javascript out功能
是complete
。它在錯誤或成功回調之後被解僱。從docs
function foo(arg, ajaxcomplete) {
$.ajax({
success: function() {
alert('O.K.');
},
complete: function(){
alert('We are done');
}
});
}
描述:
完整(jqXHR,textStatus)功能,陣列 甲功能的請求完成(成功和錯誤回調之後被執行)時被調用。該函數獲得兩個參數:jqXHR(在jQuery 1.4.x中,XMLHTTPRequest)對象和一個字符串,用於分類請求的狀態(「成功」,「未修改」,「錯誤」,「超時」,「中止」或「parsererror」)。從jQuery 1.5開始,完整的設置可以接受一組函數。每個函數都會依次調用。這是一個Ajax事件。
success()
函數仍然是知道您的AJAX調用已完成的方法。即使包裝在一個函數中,它仍然是異步發生的,在你的情況下,功能foo()
將可能已經完成並在success()
函數被調用之前返回。
成功是不夠的。發生錯誤時不會被解僱。看到我的答案。 – gdoron 2012-02-13 15:24:49
您可以使用complete
事件來設置所需的變量,因爲無論請求成功還是失敗,都會觸發它。
function foo(arg, ajaxcomplete) {
$.ajax({
//ajaxcall...
success: function() {
},
complete: function(){
//set ajaxcomplete to true here
}
}
@downvoter - 請評論! – ShankarSangoli 2012-02-13 15:33:07
他低估了這裏的所有答案。我有一種不好的感覺,那就是這裏的其他答案所有者之一。 – gdoron 2012-02-13 15:43:29
這樣的人應該被拋出SO。 – ShankarSangoli 2012-02-13 15:44:55
你可以有ajaxComplete
參數作爲回調:
function foo(arg, ajaxcomplete) {
$.ajax({
//ajaxcall...
complete: function() {
ajaxcomplete();
// Some other code here if required
}
}
,你可以調用像這樣:
var isComplete = false;
foo('someArg', function() { isComplete = true; });
爲什麼不只是你需要在成功做什麼'成功'回調?你甚至可以傳遞一個函數來成功調用。國際海事組織(IMO),在成功的時候設置一個標誌來通知AJAX何時完成,這違背了你正在使用的回調模型。 – FishBasketGordo 2012-02-13 15:19:19
你能澄清嗎?也許包括一些描述你想要做的事情的psuedocode – 2012-02-13 15:19:22