Ajax访问controller,通过controller return来重定向跳转页面失败
Ajax回调函数中再次使用Ajax访问controller,通过controller return来重定向跳转页面失败
$.ajax({
type:"post",
url:"setNewPassword",
data:{
id:$("#id").val(),
newPassword: $("#password").val()
},
success:function(data){
if(data==1){
layer.msg("修改成功,即将跳转至首页登录。")
$.ajax({
type:"post",
url:"jumpToFindePassword2"
})
}else{
layer.alert("修改失败(1),请联系我们")
}
},
error:function(){
alert("修改失败(2),请联系我们");
}
});
Controller
@RequestMapping(value = "/jumpToFindPassword2")
public String jumpToLogin() {
System.out.println("jumpToLogin");
return "FindPassword2";
}
问题
页面无法跳转是因为虽然没有@ResponseBody,但是ajax访问controller ,依然会return给ajax
解决办法
如果是在webapp目录下,可直接在success和error 回调函数中用js跳转。
layer.msg("修改成功,即将跳转至首页登录。")
setTimeout(function(){
$(location).attr("href","/stu-info_manage/")
},2000);
如果是在WEB-INF下,则可以在success下访问专门跳转目标页面的controller来重定向,需要传递的数据可以通过session来传递。
success:function(data){
$(location).attr("href","/stu-info_manage/jumpToFindPassword2_2")
}
@RequestMapping(value = "/jumpToFindPassword2_2",method = RequestMethod.GET)
public String jumpToFindPassword2_2(){
return "FindPassword2";
}
本文探讨了Ajax访问控制器后重定向失败的问题,并提供了解决方案。一是直接使用JavaScript进行页面跳转,二是通过访问特定控制器实现重定向。
3027





