Ajax请求如何重定向
背景
在前端使用Ajax请求,后端使用HttpServletResponse.sendRedirect(“URL”);的情况下,页面并未发生跳转,这是为什么呢?
原因
默认ajax是不支持重定向的,因为ajax本身就是局部刷新,不重新加载页面的。
解决方法
后端java设置重定向Header
HttpServletResponse response = CommonUtils.getHttpServletResponse();
HttpServletRequest request = CommonUtils.getHttpServletRequest();
//告诉ajax我要重定向
response.setHeader("REDIRECT", "REDIRECT");
//告诉ajax我重定向的路径
response.setHeader("CONTENTPATH", loginJumpUrl + "&NextAction=" + URLEncoder.encode(request.getHeader("referer"), "utf8"));
前端common.js全局设置ajax请求完成后处理逻辑
//设置全局ajax处理逻辑
$.ajaxSetup({
//设置ajax请求结束后的执行动作
complete: function (xhr) {
// 通过XMLHttpRequest取得响应头,sessionstatus
if("REDIRECT" == xhr.getResponseHeader("REDIRECT")){ //若HEADER中含有REDIRECT说明后端想重定向,
var win = window;
while(win != win.top){
win = win.top;
}
win.location.href = xhr.getResponseHeader("CONTENTPATH");//将后端重定向的地址取出来,使用win.location.href去实现重定向的要求
}
}
});
版权声明:本文为growing1224原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。