我在我的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好