初想:想在后台程序处理完业务逻辑,然后如果失败返回错误信息,成功则进行跳转,当在跳转时居然不能够跳转页面。
问题分析:
ajax只是局部刷新,所以不能在后台接口直接进行页面的跳转,只能在ajax的回调函数中进行页面的跳转
解决方法:
后台
@RequestMapping("/login")
@ResponseBody
public Login Login(@RequestBody Login login, HttpServletRequest request){
User user = service.selectUserByUserId(login.getUserId());
if(user != null){
HttpSession session = request.getSession();
session.setAttribute("user", user);
login.setMessage("success");//通过message来通知前台
}else{
login.setMessage("false");
}
return login;
}
前台
<script type="text/javascript">
function login() {
var userId = $("#userId").val();
var password = $("#password").val();
$.ajax({
url: "${pageContext.request.contextPath}/login",
type : "post",
data : JSON.stringify({userId : userId, password : password}),
contentType : "application/json;charset=UTF-8",
dataType : "json",
success : function (data) {
if(data.message == "false"){
alert("账号不存在或者密码错误");
}else {
<!--通过此方法来让前台主导向后台发出请求-->
window.location.href = "${pageContext.request.contextPath}/success"
}
},
});
}
</script>
后台
@RequestMapping("/success")
public String loginSuccess(){
return "hello";
}
效果
失败
成功
上述代码只是做一个简单的模拟,对于前台发出的请求,后台实际上是要对其身份进行验证的,在此不做过多代码完善。