2012-03-28 77 views
2

我試圖確保我的web應用程序免受ajax請求的超時。 要做到這一點,我顯然需要模擬這種超時。如何模擬ajax請求的瀏覽器超時?

從我這裏找到: http://kb.mozillazine.org/Network.http.connect.timeout#Background 火狐超時是系統相關的,從我這裏找到:http://support.microsoft.com/kb/181050 IE的超時時間爲60分鐘的默認值。

所以我看到下面的方式來模擬超時:

  • 使服務器等待60分鐘(呸))
  • 改變IE的超時時間爲較小的值(這要求註冊表更改)
  • 配置客戶端和服務器之間的代理,並使其超時以上

所有的方式看起來像矯枉過正我。有誰知道更簡單的方法(可能在不同的瀏覽器上)? 謝謝!

+1

在Ajax請求不能指定超時?然後簡單地把一個睡眠(超時+ 1000);在您的服務器文件中進行測試。 – NeeL 2012-03-28 09:30:37

+0

由於這只是「測試」,我會選擇使用爲此設計的現有代理。 – 2012-03-28 09:30:39

+1

拔掉網線 – jondinham 2012-03-28 09:30:52

回答

1

最後對我來說最簡單的方法是通過這裏所描述的註冊表HKEY_CURRENT_USER \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Internet設置 設置ReceiveTimeout模擬超時:

http://support.microsoft.com/kb/181050

的Darshan的解決方案可能也行,但我只是測試以上。謝謝大家的幫助!

1

什麼是危害KeepAliveTimeout註冊表 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ InternetSettings?

更多信息可以在這裏找到:
http://support.microsoft.com/kb/181050

+0

好吧,不多,但是你需要重新啓動系統,如果我想在未來再次模擬它,我需要重新啓動等。但我確實認爲這是3種解決方案中最簡單的方法。 – machinery 2012-03-28 09:36:21

+0

'jQuery。AJAX({ \t類型: 「後」, \t網址:JSON, \t數據類型: 「文本」, \t超時:(30 * 1000), \t數據:{ 'ID':ID, 'SQL': SQL, 'p':PS, '項目':psplit [0], '任務':psplit [1]}, \t \t成功:函數(d){//做一些事情}, \t \t錯誤:功能(resp,狀態,錯誤){ \t \t如果(狀態){ \t \t if(status == ''timeout')alert('錯誤:存在連接問題。\ n請再試一次。\ n如果問題仍然存在,請聯繫幫助臺。 \t \t \t \t} }); '我在這裏使用超時時間爲30秒...呼叫功能可能是存儲過程等待30秒的延遲。並測試你的超時代碼...希望這可以幫助 – Darshan 2012-03-28 09:41:00

+0

謝謝,看起來不錯,但我沒有使用jQuery。但是,這可以通過IE8下的超時XHR屬性來模擬。 – machinery 2012-03-28 09:50:41

9

簡單地將ajax超時設置爲1毫秒不是簡單得多嗎?即使在本地主機上,它也會始終超過這個值。這是我總是使用的方法。用這種方法不行使的唯一的事情就是您的首選超時時間給予最終用戶的實際「感覺」(即3秒感覺長,2秒太短)。但是如果你只是想在錯誤響應下運行代碼,這對我來說是個訣竅。

0

很簡單,將超時設置爲10

這樣的:xhr.timeout = 10;