在springMVC开发时用ajax请求服务器,后台进行重定向处理时,页面ajax返回302(重定向状态码,但没有重定向到自己想要的页面);
解决办法:
后台:设置相应头表明是重定向,并且同时设置重定向的路径
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()+request.getContextPath();
if(request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
//告诉ajax我是重定向
response.setHeader("REDIRECT", "REDIRECT");
//告诉ajax我重定向的路径
response.setHeader("CONTENTPATH",basePath+"/loginResult.html");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
}else{
response.sendRedirect(basePath+"/loginResult.html");
}
前台:通过XMLHttpRequest获取重定向的标识和路径
// 解决Ajax异步请求 springMvc 不跳转页面的问题
$.ajaxSetup( {
//设置ajax请求结束后的执行动作
complete :
function(XMLHttpRequest, textStatus) {
// 通过XMLHttpRequest取得响应头,sessionstatus
var redirect = XMLHttpRequest.getResponseHeader("REDIRECT");
if (redirect == "REDIRECT") {
var win = window;
while (win != win.top){
win = win.top;
}
win.location.href= XMLHttpRequest.getResponseHeader("CONTENTPATH");
}
}
});