我有一個簡單的ajax請求來加載更多的職位。我正在考慮在調用一個「加載更多」ajax請求以防止多次調用「加載更多」時使用鎖。計劃是在調用ajax請求方法時鎖定它,並在使用request.done或request.fail方法返回時釋放該鎖。 有沒有什麼情況下,jQuery ajax請求沒有調用其中的任何一種方法(例如短暫的Internet連接丟失)?jQuery ajax請求是否總是調用done或fail方法?
1
A
回答
1
在所有的包裝下,jQuery的ajax只是一個XMLHttpRequest。一個XMLHttpRequest可以處於以下狀態之一:
UNSENT
(數值0):該對象已經構造。 (數值1):open()方法已成功調用,並且可以使用send()方法進行請求。HEADERS_RECEIVED
(數值2):所有重定向(如果有的話)都已被遵循,並且已收到最終響應的所有HTTP標頭。該對象的幾個響應成員現在可用。LOADING
(數值3):正在接收響應實體正文。DONE
(數值4):數據傳輸已完成或傳輸過程中出現問題(例如無限重定向)。
基本上你問如果有當DONE
後請求是OPENED
永遠達不到的情況下。
如果有無限重定向,我們將從HEADERS_RECEIVED
跳到DONE
(狀態爲失敗),並且請求已完成。
如果重定向成功,我們繼續LOADING
,如果數據成功接收,則將繼續到DONE
。
但是,如果數據從未收到,我們仍在等待呢? XMLHttpRequest有一個屬性timeout
,它指定在請求超時後失敗多少毫秒。然而,根據this question,jQuery 不是爲它提供了一個默認的非空值(我沒有自己檢查過它,答案可能已經過時,您將不得不引用最新的源代碼)。有些瀏覽器具有內置的超時默認值,但它們因供應商而異。
因此,如果您沒有手動配置超時,則可能是,儘管不太可能,請求仍然無限期地掛起。因此,實施故障安全超時是明智的。
相關問題
- 1. $ .ajax()。fail()不工作$ .ajax()。done()是
- 2. 使用winjs.promise實現.done()。fail()方法
- 3. 何時使用。於是,.done,.fail
- 4. $ .ajax請求總是401(UNAUTHORIZED)
- 5. jQuery的AJAX請求總是失敗
- 6. jquery跨域ajax請求總是錯誤
- 7. jQuery .fail()方法是否接受回調作爲參數?
- 8. 調用jquery ajax - .fail vs.:error
- 9. jQuery ajax done()多次調用
- 10. Ajax請求總是得到錯誤
- 11. ASP MVC控制器方法不總是調用$ .getJSON請求
- 12. HTTP請求是否總是完成?
- 13. 哪一個應該用在jquery ajax調用的情況下,成功/錯誤回調或done()/ fail()鏈接函數
- 14. 如何判斷傳入請求是否是web方法請求?
- 15. AngularJS,jQuery ajax請求,總是要求(點擊)兩次
- 16. 是否可以向類庫中的方法發出Ajax請求?
- 17. 檢查是否Ajax請求是空
- 18. 如何擴展JQuery的ajax done()方法?
- 19. AJAX請求總是返回false
- 20. Ajax請求總是通過別人
- 21. Ajax - mvc請求總是失敗
- 22. ajax json請求,總是返回錯誤
- 23. jquery when.apply()。done等待一個ajax調用,但不是另一個?
- 24. 我是否總是調用JQuery Deferred.resolve或Deferred.reject?
- 25. 檢查請求是否由Ajax發送或不是
- 26. Dart如何檢查請求是否是ajax請求
- 27. node.js express:如何知道請求是否是AJAX請求?
- 28. HTTP OPTIONS請求是否可以返回204或是否總是返回200?
- 29. 確定/規避AJAX請求是否超時的方法?
- 30. jQuery AJAX調用總是觸發成功