项目为Java 项目, 有个filter,作用是检查是否登录或是否登录超时,如果没有登录或登录超时,则跳转至登录界面。
问题来了,有个功能是异步请求数据,返回json并解析内容,遇到session超时,filter起作用,内容跳转至登录界面,把界面返回给ajax的回调函数里的参数中。
这样解析失败,停留在遮罩层不动了。想着给用户一个提示,告诉用户是因为超时才查不到数据的。
在CSDN论坛WEB开发的ajax版块提问,版主net_lover回复:
String header = request.getHeader("X-Requested-With");
if(null != header && header.equals("XMLHttpRequest")){
//返回json
}
查了一下,Ajax 请求多了个X-Requested-With,可以利用它,request.getHeader("X-Requested-With"); 为 null,则为传统同步请求,为 XMLHttpRequest,则为 Ajax 异步请求。
在filter中做判断,如果是Ajax异步请求,则返回json,内容中有个标记,表示用户未登录或登录超时;如果是传统请求则跳转页面。
在Js中,判断该表记是否存在并且是filter中给的值,是则停止json解析,提示用户未登录或登录超时。不存在则继续解析内容。