首页 > 代码库 > 07. ajax请求,解决sendRedirect 无效
07. ajax请求,解决sendRedirect 无效
介绍:
- 后台基于旧代码用的Filter验证,若 Session过期,则跳转登陆页面
- 前台框架:EasyUI
问题:
- 最初后台验证不通过:但是该方式对ajax请求无效,无法跳转到登陆页面1
httpServletResponse.sendRedirect(httpServletRequest.getContextPath() +
"/login.html"
);
- 所以我把 ajax请求 和 其它静态请求等 分开处理123456
if
(servletPath.endsWith(
".do"
)){
java.io.PrintWriter out = httpServletResponse.getWriter();
out.println(
"/login.html"
);
}
else
{
httpServletResponse.sendRedirect(httpServletRequest.getContextPath() +
"/login.html"
);
}
- 现在的问题是,我懒的为每个ajax请求再去重写onSuccess事件判断是否包含 /login.html,这样的话我还不如给Session设置过期 1个月.
解决如下:123456789101112// 这是每个页面的通用引用js文件
<script type=
"text/javascript"
src=http://www.mamicode.com/
"../scripts/common.js"
></script>
在common.js中:
// 得益于ajax的 global(默认: true)触发全局 AJAX 事件。
var
jumpLoginPageStr =
‘<script type="text/javascript">‘
+
‘$(document).ajaxComplete(function(event, request, settings) {‘
+
‘ if(request.responseText.indexOf("/login.html") != -1){ ‘
+
‘window.top.location.href = "../login.html";‘
+
‘ }‘
+
‘ }) ‘
+
‘</script>‘
;
document.write(jumpLoginPageStr);
- 最初使用ajaxSuccess全局事件,但是发现session过期后,即便ajax status 200 ok,也没有触发这个全局事件,就换成了 ajaxComplete
- request.responseText == "/login.html" // session失效时,也判断为false,原来是:
2017年5月26日 10:24:20
07. ajax请求,解决sendRedirect 无效
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。