服務器應答請求之前顯示錯誤之前,瀏覽器可以等待多久?這次可以無限制嗎?瀏覽器在ajax請求後等待多久?
回答
如果您使用的是jQuery $ .ajax調用,則可以設置timeout屬性來控制請求返回並超時之前的時間長度。超時設置以毫秒爲單位,因此只需將其設置爲非常高的值即可。你也可以將它設置爲0來表示「無限」,但在我看來,你應該設置一個高值。
注意:無限制是actually the default但大多數瀏覽器都有默認的超時時間。
由於超時而返回ajax調用時,它將返回一個錯誤狀態「超時」,如果需要,您可以使用單獨的情況處理該錯誤狀態。
所以,如果你想設置爲3秒的超時,在這裏處理超時是一個例子:
$.ajax({
url: "/your_ajax_method/",
type: "GET",
dataType: "json",
timeout: 3000, //Set your timeout value in milliseconds or 0 for unlimited
success: function(response) { alert(response); },
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus==="timeout") {
alert("Call has timed out"); //Handle the timeout
} else {
alert("Another error was returned"); //Handle other error type
}
}
});
把timeout值設置爲0會將AJAX超時設置爲無限期(無限制讀取)。 – John
@John甚至沒有設置它(讀取0是默認值)。 –
我收到textStatus中的「錯誤」而不是「超時」 – UmaShankar
您能否更詳細地解釋一下您想要實現的目標 - 服務器上是否有長時間運行的進程,是否只需要在本地計算機上更改設置,或者您是否需要管理它爲大量的用戶?
瀏覽器等待多久取決於許多因素,例如發生超時的地方 - 它是在TCP級別,服務器還是本地瀏覽器?
如果你在服務器上有一個長時間運行的進程,並且你想以後更新網頁,處理它的典型方式是異步運行這個長進程並在完成時通知客戶端,有一個ajax調用來輪詢服務器,或使用HTTP 1.1並向客戶端發送通知流。
在這兩種情況下,連接仍然可能被關閉,所以客戶端仍然需要重新打開它的能力。
是的,沒有。是的服務器可以做到這一點,或配置爲這樣做,沒有瀏覽器(我不知道版本/分銷商的具體情況)可能會啓用超時。
有2個解決方案,雖然實現/模擬這種通過HTTP:
- 如果這是簡單的一個長期運行的腳本,你在等待結果這個心不是要走的路,你應該做的,而不是作爲前面提到的海報,並使用異步處理與服務器輪詢的結果,這將是一個更確定的火災解決方案。例如:來自圖像處理器服務器端的縮略圖腳本:用戶上傳圖像,服務器亞馬遜返回200和「作業ID」。客戶端(javascript ^^)然後可以使用JobID來請求作業狀態/結果。
- 如果你的目標是在瀏覽器和服務器之間有一個實時連接(單向連接,一旦請求由瀏覽器完成,沒有其他信息可以在沒有使用新請求的情況下發送(ajax ^^)),這是稱爲長輪詢/反向Ajax,可用於通過http進行實時通信。有幾種技術並行使用2個長輪詢請求,一旦其中一個超時,第二個請求變爲活動狀態,第一個嘗試重新連接。
很好的回覆,謝謝 –
我發現,如果出現正常(HTML頁面)請求,瀏覽器會在cca後運行超時。 30秒。這很重要,因爲其他參與者可能會遵循它:代理,路由器(路由器在這個遊戲中玩嗎?我不確定)。我正在使用4秒長時間的服務器端延遲(如果沒有任何要發送到客戶端),我的AJAX客戶端立即執行另一個HTTP請求(我在本地網絡,沒有互聯網延遲)。 4秒足夠長,不會讓服務器和網絡經常出現輪詢,並且對於這種情況來說足夠短,當某個輪詢從客戶端無法檢測和處理的行中跳出時。另外,彗星(長HTTP請求)還存在其他問題:瀏覽器對同時HTTP請求數量的限制,處理客戶端事件(必須立即發送到服務器),服務器/網絡宕機檢測和恢復,多用戶處理等。
- 1. 多個AJAX請求凍結瀏覽器
- 2. 瀏覽器在POST請求上等待本地主機
- 3. 等待AJAX請求完成?
- 4. Extjs4,等待ajax請求
- 5. ajax在瀏覽器中導航請求
- 6. 瀏覽器卡在ajax請求
- 7. 等待在React中完成ajax請求?
- 8. IE瀏覽器不加載AJAX請求
- 9. 同步Ajax請求「鎖定」瀏覽器
- 10. 等待多個Alamofire請求
- 11. 瀏覽器請求死亡之前多久?
- 12. Ajax請求掛在Chrome瀏覽器後連接丟失
- 13. AJAX請求和常規瀏覽器請求之間的區別
- 14. 瀏覽器請求和Ajax請求有什麼區別?
- 15. 區分瀏覽器GUI請求和AJAX請求
- 16. 當在瀏覽器中的任意位置按ESC時,取消等待請求
- 17. 捲曲請求掛起瀏覽器,並保持在等待交友
- 18. AJAX請求不因等待時間
- 19. ajax HTTP請求的等待時間
- 20. AngularJS等待ajax請求完成
- 21. 燼幫手等待一個Ajax請求
- 22. 等待一系列Ajax請求完成
- 23. Wicked PDF - 等待AJAX請求完成
- 24. 等待異步ajax請求完成
- 25. 的Javascript等待的extern Ajax請求
- 26. for循環..等待AJAX請求
- 27. D3 - 等待$ .ajax請求完成
- 28. 等待unlill ajax請求完成
- 29. 獲取Ajax先前的請求與瀏覽器後退按鈕
- 30. Http請求多瀏覽器麻煩
不知道你使用的是什麼,但是,是可以延長超時。爲了無限,我不知道。雖然我會建議不要無限的時間。如果需要,可以將其設置爲90秒或稍長一些。如果花費時間超過30秒,可能會有更好,更快的方式來做某件事。 – Matt
+1 - 我也很好奇這件事。我懷疑你需要擔心客戶超時。你無法控制這一點。谷歌搜索出現了這個。它基本上說服務器或瀏覽器都可以超時。所以我會選擇所有瀏覽器的默認值不會超過的東西。 http://support.microsoft.com/kb/813827 – mrtsherman
調試時,我曾經在ajax調用後出去吃午飯,然後回到瀏覽器仍在等待回覆。我點擊了我的調試器,瀏覽器拿起響應。我不認爲這一點很重要,因爲我正在調試 –