我在我的java彈簧項目中使用jQuery jqGrid插件。我使用服務器端分頁和排序,所以當用戶更改頁面時,jqgrid發送一個ajax請求。我的問題是,有時用戶的會話可能在ajax請求和我的服務器端代碼期間超時,將ajax請求重定向到登錄頁面。 我需要在jqgrid ajax請求中檢測服務器重定向。事實上,我想要一個afterRequest事件,在每個jqgrid請求之後觸發。我看到loadComplete
和beforeProcessing
事件,但這些事件在具有數據的請求之後觸發,如果請求沒有數據或服務器上的重定向,則這些事件不會觸發。我怎樣才能做到這一點?jqgrid - 每個Ajax請求後發生火災事件
0
A
回答
0
我認爲你必須改變你的要求。重定向在透明級別上工作,它是XMLHttpRequest
規範的一部分(參見here和the old answer)。您可能需要的是設置服務器端所需的標頭(如通過ajaxGridOptions: { xhrFields: { withCredentials: true } }
設置xhrFields: { withCredentials: true }
選項jQuery.ajax
)。如果需要,您可以使用loadBeforeSend
回調來指定Access-Control-Allow-Origin
HTTP標頭的任何其他特定值。它具有jqXHR
對象作爲參數,這是XMLHTTPRequest
對象的擴展名。因此,您可以使用例如jqXHR.setRequestHeader
方法(請參閱the answer)來實際定製請求。
如果重定向後的最終響應有另一機構那麼您可以在beforeProcessing
或loadError
回調中檢測它。這兩個回調都包含jqXHR`對象作爲參數。因此,您可以完全訪問來自基礎Ajax響應的所有信息。
對不起,我無法爲您提供更多詳細信息,但您的問題中沒有包含關於此問題的足夠技術細節(例如HTTP跟蹤)。
0
你可以處理爲與格洛巴阿賈克斯管理任何的jqGrid或其它部件的AJAX重定向在此腳本:
$(document)
.ajaxStart(function() { $('#loadingPane').show(); }) /* catch ajax start event*/
.ajaxStop(function() { $('#loadingPane').hide(); }) /* catch ajax stop event */
.ajaxError(function(event, jqxhr, settings, exception) /* catch ajaxerror and specifically redirections */
{
if (settings.url.indexOf("aspx")>0 && (jqxhr.status === 401 || jqxhr.status === 403)) {
event.stopPropagation();
location.reload(true);
}
}
);
相關問題
- 1. 火災事件每秒
- 2. 當按鈕加載ajax時發生火災事件
- 3. 火災事件
- 4. 火災事件
- 5. 在某個事件中發生火災多重功能
- 6. 火災文件後,事件被渲染
- 7. 2分鐘後斷開事件火災
- 8. Laravel 5.1事件火災
- 9. 火災多SelectionChanged事件
- 10. ComboBox SelectionChanged事件火災晚
- 11. JS禁用火災事件
- 12. C#,容器火災事件
- 13. 從選定的選項卡中的ManWindow發生火災事件
- 14. 谷歌聚合物監聽火災事件從未發生過
- 15. 有選擇地在C中發生火災事件#
- 16. 僅在圖像變化時發生火災事件
- 17. 更改事件只發生一次火災
- 18. OpenGL:創建新幾何圖形時發生火災事件
- 19. 僅在特定時間段後輸入元素髮生火災更改事件
- 20. CrystalReportsViewer - 加載參數/點擊確認按鈕後發生火災事件
- 21. 即使選擇未發生變化,也會發生火災更改()事件
- 22. PHP - 環通記錄和火災事件每個n行
- 23. 火災事件一旦超時或其他事件完成後
- 24. 火災後中斷
- 25. UIWebView不會導致document.ready發生火災
- 26. SmartGWT:啓動時發生火災
- 27. jQuery的Ajax請求不觸發後續事件
- 28. 與jQuery的ajax請求後觸發事件
- 29. jquery的火災事件時元件示
- 30. Ajax呼叫火災錯誤事件,但返回200好