2013-05-14 123 views
20

有沒有辦法運行一個函數,如果jQuery的$ .ajax函數命中它的timeoutajax超時回調函數

$.ajax({ 
... 
... 
,timeout:1000(){do something if timeout) 
... 

}); 
+2

你想也許什麼:http://stackoverflow.com/questions/3543683/jquery-ajax-timeout

而且您現在可以通過返回的JQuery推遲承諾對象的.fail方法Wire你的錯誤處理程序 - 設置 – Eli 2013-05-14 00:44:58

回答

40
$.ajax({ 
    ... 
    timeout: 1000, 
    error: function(jqXHR, textStatus, errorThrown) { 
     if(textStatus==="timeout") { 
      //do something on timeout 
     } 
    } 
});​ 

有關詳細信息檢查出jQuery文檔:

http://api.jquery.com/jQuery.ajax/


編輯

我最初回答這個問題已經過了一年多了,textStatus可能的值已更改爲"success", "notmodified", "error", "timeout", "abort","parsererror"。對於錯誤回調,只有最後四種狀態是可能的。

var promise = $.ajax({ timeout: 1000 }); 

promise.fail(function(jqXHR, textStatus) { 
    if(textStatus==="timeout") { 
     // handle timeout 
    } 
}); 
+4

通常,解釋好的答案,而不是僅僅刪除一段代碼。 – Daedalus 2013-05-14 00:44:37

+13

@達達盧斯在這種情況下,我會說代碼是不言自明的。 – Paulpro 2013-05-14 00:45:18

+1

@Paulpro我不同意。它沒有解釋傳遞給錯誤函數的內容,除了有時等於'超時'的字符串。 – Daedalus 2013-05-14 00:45:46