Javascript jqgrid-在每个ajax请求之后触发事件

Javascript jqgrid-在每个ajax请求之后触发事件,javascript,jquery,ajax,jqgrid,Javascript,Jquery,Ajax,Jqgrid,我在JavaSpring项目中使用jQueryJQGrid插件。我使用服务器端分页和排序,所以当用户更改页面时,jqgrid会发送一个ajax请求。我的问题是,有时用户的会话可能在ajax请求期间超时,而我的服务器端代码将ajax请求重定向到登录页面我需要在jqgrid ajax请求中检测服务器重定向。事实上,我想要一个afterRequest事件,它在每次jqgrid请求后触发。我看到loadComplete和beforeProcessing事件,但这些事件是在有数据的请求之后触发的,如果请求

我在JavaSpring项目中使用jQueryJQGrid插件。我使用服务器端分页和排序,所以当用户更改页面时,jqgrid会发送一个ajax请求。我的问题是,有时用户的会话可能在ajax请求期间超时,而我的服务器端代码将ajax请求重定向到登录页面我需要在jqgrid ajax请求中检测服务器重定向。事实上,我想要一个afterRequest事件,它在每次jqgrid请求后触发。我看到
loadComplete
beforeProcessing
事件,但这些事件是在有数据的请求之后触发的,如果请求在服务器上没有数据或重定向,则不会触发这些事件。我该怎么做呢?

我想你必须改变你的要求。重定向工作在透明级别,它是
XMLHttpRequest
规范的一部分(请参阅和)。您可能需要设置服务器端所需的头(比如设置
xhrFields:{withCredentials:true}
jQuery.ajax的选项
via
ajaxGridOptions:{xhrFields:{withCredentials:true}
)。如果需要,您可以使用
loadBeforeSend
callback指定
Access Control Allow Origin
HTTP头的任何其他特定值。它以
jqXHR
对象作为参数,它是
XMLHTTPRequest
对象的扩展。因此,您可以使用
jqXHR.setRequestHeader
方法来定制请求

如果重定向后的最终响应有另一个主体,则您可以在处理前的
加载错误
回调中检测它。两个回调都包含jqXHR`object作为参数。因此,您可以完全访问底层Ajax响应中的所有信息


很抱歉,我无法向您提供更多详细信息,但您的问题没有包含足够的关于该问题的技术细节(例如HTTP跟踪)。

您可以使用globa ajax管理为任何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);
   }
 }
);