问题描述:今天在使用SpringMVC写注册和登录功能时遇到了这样的一个问题,前端同样使用ajax异步请求方式请求后台数据,在controller类里写了两个方法,分别是支持注册和登录的方法,在测试时,注册能够正常注册,请求能够到达,但是注册完后转到登录时却请求不了后台。以下分别是注册和登录的JS代码:
注册:
function sendForm() {
var uId=document.getElementById("Id").value;
var name=document.getElementById("name").value;
var phone=document.getElementById("phone").value;
var email=document.getElementById("email").value;
var password=document.getElementById("pwd").value;
var college=document.getElementById("college").value;
var code=document.getElementById("check_code").value;
var sex=document.getElementById("sex").value;
if(uId!=0 && name!=0 && phone!=0 && email!=0 && password!=0 && college !=0 ){
$.ajax({
url:"item/register",
type:"post",
data:{"uId":uId,"Name":name,"Phone":phone,"Password":password,"Sex":sex,"College":college,"Code":code,"Email":email},
success:function(data){
if(205==data.status){
document.getElementById("uId_Error").innerHTML=data.msg;
};
if(200==data.status){
window.location.href ="pages/basic/login.jsp";
}
},
error:function(){
window.location.href ="pages/error/Ox7fff.jsp";
}
});
}else{
alert("请完善信息后提交");
return false;
}
}
登录:
function sendForm() {
var Id=document.getElementById("id").value;
var name=document.getElementById("name").value;
var password=document.getElementById("password").value;
var code=document.getElementById("vcodeinput").value;
if(Id !=0 && name != 0 && password !=0 && code !=0){
$.ajax({
url:"item/login",
type:"post",
data:{"uId":Id,"name":name,"password":password,"code":code},
success:function(data){
},
error:function(){
},
})
}else{
alert("请完善信息后提交!");
return false;
}
return false;
};
springMVC:
@Controller
@RequestMapping("/item")
public class UserController {
@Autowired
private IUserService userService;
/**
* @author HMH
* @date 2021-3-12 下午2:10:14
* @dep 研发四
* @describe:用户注册
*
*/
@RequestMapping(value = "/register", method = RequestMethod.POST)
@ResponseBody
public MessageInfo Register(User user) {
String msg = "";
MessageInfo messageInfo;
String Id = user.getuId();
System.out.println("Id:" + Id);
List<User> dbuser = (List<User>) userService.getUserById(Id);
System.out.println("dbuser:" + dbuser);
if (dbuser.isEmpty()) {
this.userService.insertUser(user);
// 状态码 205 用户已存在注册失败 200 用户不存在注册成功
messageInfo = new MessageInfo(user, null, 200);
} else {
msg = "该用户已存在!";
messageInfo = new MessageInfo(user, msg, 205);
}
return messageInfo;
}
/**
* @author HMH
* @date 2021-3-12 下午2:37:14
* @dep 研发四
* @describe:用户登录
*
*/
@RequestMapping(value="/login",method=RequestMethod.POST)
@ResponseBody
public String Login(User user){
System.out.println("登录开始!");
System.out.println("user:"+user);
return null;
}
}
经过检查,发现原来在登录页面的头部缺少了一段代码:
<base href="<%=basePath%>">
这段代码的作用可参考文章:
https://www.cnblogs.com/MeridaChen/p/6847777.html