2013-01-11 83 views
1

在我的ASPX頁面中,我調用一個包含5秒超時的Ajax調用的JavaScript函數。爲什麼ajax呼叫的超時不能正常工作

我首先嚐試調用此函數關閉互聯網連接並超時正常工作。但是當我第二次調用這個函數時,Ajax調用直接調用成功函數,而不用等待超時和隨後的錯誤函數。

這裏是Ajax調用

$.ajax({ 
    type: "POST", 
    url: pageUrl + "/SubmitAnsGetNewQue", 
    data: jsonParamsForSbmt, 
    timeout: 5000, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: true, 
    success: SetNextQueSet, 
    error: OnErrorCall 
}); 
+0

是您的連接仍然關上你的第二個電話嗎?因爲如果它處於開啓狀態,您可能會得到一個快速響應,解釋*成功*和快速響應。 –

+0

是的,我的連接是關閉... –

回答

3

timeout是不是你認爲在這種情況下,它的時間以毫秒爲單位是jQuery將等待AJAX​​請求返回的金額。

如果服務器花了超過5秒的時間回覆,回調將不會觸發。

超時

設置一個超時時間(毫秒)的請求。這將覆蓋使用$ .ajaxSetup()設置的全局超時。超時時間從$ .ajax調用開始;如果有多個其他請求正在進行,並且瀏覽器沒有可用連接,則可能會在請求發送之前超時。在jQuery 1.4.x及以下版本中,如果請求超時,XMLHttpRequest對象將處於無效狀態;訪問任何對象成員可能會拋出異常。僅在Firefox 3.0+中,腳本和JSONP請求不能被超時取消;腳本即使在超時時間後到達,也會運行。

docs

+0

是的...是嗎?不是OP期望的一樣嗎? –

+0

@RobertKoritnik,我相信他認爲在請求之間應該有5秒的停頓。其實我不太確定他的意思和他做了什麼。 – gdoron

+0

可能是OP在沒有連接時想要暫停請求。當然更有趣的是第二次調用執行'success'處理程序......它應該仍然等待超時並執行'error'處理程序。 –