2009-10-09 109 views
1

我認爲你可以在後期設置,並在jQuery超時獲取方法,但我想知道jQuery是否有一個像ajax開始和停止一樣的全局時間。用jquery超時Ajax請求?

就像我想設置它,如果說一個帖子或獲取或某種ajax請求正在運行,它運行更多的時間X秒。彈出窗口或其他類似的內容會顯示「服務器速度很慢並且請求已超時」並殺死該請求。

然後,用戶可以再次嘗試或執行其他操作。

jquery是否有類似的東西?

感謝

回答

4

的jQuery.ajax功能你想要什麼。它使您能夠訪問用於進行AJAX調用的大量選項。

具體來說,你會想做出類似調用

$.ajax({'complete': callbackFunction, 'url': 'foo/bar/', 'timeout': 5000, 'error': errorCallback}); 

你感興趣的兩個選項是timeouterror。該函數的整個文檔是here。這比使用更標準的功能要多一點,但更靈活。

error函數與您在任何jQuery AJAX請求中使用的標準回調函數非常相似。如果請求成功,則調用回調函數,但錯誤函數在失敗時會被調用(例如404錯誤或超時命中)。您將使用錯誤功能向用戶顯示他們的請求已超時的消息。有關函數參數的完整文檔(實際上,您可能不需要使用它)可以在$ .ajax文檔頁面(前面鏈接)中找到。

或者,您可以通過使用jQuery.ajaxSetup函數在每個AJAX調用中全局設置timout。它的參數是完全一樣的jQuery.ajax功能,所以你會做這樣的事情:

$.ajaxSetup({'timeout': 5000, 'error': errorCallback});

的好處是,你可以繼續使用jQuery.get/jQuery.post,但缺點是,你必須做額外的工作,使AJAX調用沒有超時。

+0

很酷我覺得現在ajaxSetup是我想要的,否則我得重寫所有我的帖子。如果它成爲問題,那麼我可以轉換。如果您在ajaxSetup中設置了超時並且在$ .ajax中設置了一個超時,會發生什麼情況?哪一個會贏? 也像我有一個6MB連接和幾乎所有我的阿賈克斯請求需要約500毫秒或更少的不同連接如何做。但是56K調制解調器怎麼樣?什麼是安全超時10秒?此外,我仍然不清楚「錯誤」究竟如何。 – chobo2 2009-10-09 23:03:37

+0

如果您在$ .ajaxSetup中使用超時,那麼是的,您可以使用$ .ajax使用不同的值。 我真的不能說什麼合理的響應時間將是不同的速度與任何權威,但10秒似乎是一個很好的數額。 我已經闡明瞭答案中錯誤函數的用法。 – ShZ 2009-10-10 02:25:28