我在我的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. 每次數組發生變化時發生Typscript火災事件
- 2. 火災事件每秒
- 3. 僅從用戶請求觸發火災事件
- 4. 當按鈕加載ajax時發生火災事件
- 5. 火災事件
- 6. 火災事件
- 7. 解析完成後,backbonejs發生火災事件
- 8. 用戶登錄一段時間後發生火災和事件
- 9. 當div達到某個PX時發生火災事件
- 10. 在某個事件中發生火災多重功能
- 11. 火災文件後,事件被渲染
- 12. MarkerClusterer完成後的火災事件
- 13. 2分鐘後斷開事件火災
- 14. ajax請求後觸發一個插件
- 15. 新Ajax請求onComplete每個Ajax請求
- 16. Asp.net MVC5發生的Application_Start每一個請求 - 每個請求
- 17. 雙人火災事件
- 18. Laravel 5.1事件火災
- 19. JS禁用火災事件
- 20. C#,容器火災事件
- 21. 火災事件結束
- 22. 火災多SelectionChanged事件
- 23. SelectedIndexChanges火災TextChanged事件
- 24. ComboBox SelectionChanged事件火災晚
- 25. 有選擇地在C中發生火災事件#
- 26. OpenGL:創建新幾何圖形時發生火災事件
- 27. 僅在圖像變化時發生火災事件
- 28. 更改事件只發生一次火災
- 29. 從選定的選項卡中的ManWindow發生火災事件
- 30. 谷歌聚合物監聽火災事件從未發生過