用户在浏览器使用系统,如果一段时间后没有任何操作,session过期,然后再点击页面上的某些链接(触发一个ajax请求),服务器检测到Session过期会先返回一个302,这个时候有什么好的办法能在代码中检测到,然后再处理呢?现在客户端的脚本是用jquery的ajax写的。
烦了一段时间了,没有找到好的解决办法,看起来302是被浏览器直接处理,然后在ajax的回调函数中,收到的已经是redirect后的内容了,有没有办法能捕获到这个302的状态码呢?
这应该是个很常见的问题,有没有朋友遇到类似的情况,怎么解决的呢(不修改服务器的代码)?

解决方案 »

  1.   

    session 监听器   你自己查的看看
      

  2.   

    302就是一个redirect,问题是跳转到登陆页的时候,服务器返回整个index.html(假设是)会被XMLHttprequest对象捕获到,但是如果没有Session过期,正常情况返回的数据应该是json格式的
      

  3.   

    $.ajax({
      statusCode: {
        404: function() {
          alert("page not found"); 
    }  }}); 
    看看这段代码是否有帮助
      

  4.   


    额,我机器上有个jquery的documentation是1.4的,看了下jquery的官方api,statusCode是1.5后加进来的,以前一直没用过。
    可是302的状态还是不能被抓到。
    可能我应该换种方式思考吧,302的状态可能确实是被浏览器直接处理了所以在回调函数始终是不可能获取到。
    还是要谢谢回答!
      

  5.   

    你没把302通过response写出来 ajax当然接收不到了!可以这么做:你在后台接收到302错误码以后  String  error = "302"   response.write(error);
      

  6.   

    让它过期了自动调整到登录页面把,http://www.pascarello.com/AjaxSessionTimer.aspx