我有一個簡單的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. $ .ajax請求總是401(UNAUTHORIZED)
- 3. jquery跨域ajax請求總是錯誤
- 4. jQuery .fail()方法是否接受回調作爲參數?
- 5. ASP MVC控制器方法不總是調用$ .getJSON請求
- 6. 哪一個應該用在jquery ajax調用的情況下,成功/錯誤回調或done()/ fail()鏈接函數
- 7. HTTP請求是否總是完成?
- 8. AngularJS,jQuery ajax請求,總是要求(點擊)兩次
- 9. 是否可以向類庫中的方法發出Ajax請求?
- 10. Ajax - mvc請求總是失敗
- 11. Ajax請求總是通過別人
- 12. 確定/規避AJAX請求是否超時的方法?
- 13. 有沒有辦法讓Ajax請求總是按順序進行?
- 14. Ajax調用每次都重定向到.fail方法
- 15. jQuery對Web方法的Ajax請求
- 16. JQuery $ .ajax(),$。post()發送GET請求方法
- 17. 如何從.done()內部調用.fail()來處理一般錯誤?
- 18. PhoneGap是否支持HTTPS ajax請求?
- 19. Rails檢測請求是否爲AJAX
- 20. jQuery地址 - html()還是AJAX請求?
- 21. jquery ajax方法總是引發錯誤:回調而不是成功:
- 22. 如何檢查請求是否是Ajax或代碼隱藏 - ASP.NET Webforms
- 23. 服務器是否總是按照發送順序接收AJAX請求?
- 24. 如何知道請求是否是asp.net mvc中的ajax?
- 25. Ajax - 跨域請求是否返回請求頭?
- 26. AJAX請求是否會覆蓋另一個請求?
- 27. 使用fancybox - 如何判斷HTTP請求是否是AJAX?
- 28. 如果JavaScript在瀏覽器中被禁用,請求Ajax請求是否有效?
- 29. jquery AJAX請求
- 30. jQuery:爲什麼2 ajax GET請求而不是1請求?