解决了一上午,一直在爬坑。现在出坑来总结一下遇到的问题。
首先背景是前台一个登陆框,ajax异步传输验证登陆账号密码是否正确。
<div class="login-field">
<input type="text" name="name" required="" id="username"/>
<label>Username</label>
</div>
<div class="login-field">
<input type="password" name="pwd" required="" id="pwd"/>
<label >Password</label>
</div>
<button type="submit" onclick="tologin()">Submit</button>
function tologin() {
var name = $("input[id='username']").val();
var pwd = $("input[id='pwd']").val();
$.ajax({
url:"xxx",
data :{name:name,password:pwd},
success:function (data) {
if (data.message==="success") {
。。。
}else {
。。
}
}
});
}
然后在后台使用springboot进行接收。这一步就有一个坑。必须添加@ResponseBody注解!!!
@RequestMapping("login")
@ResponseBody
public Map<String, Object> login( User user){
Map<String, Object> resultMap = new HashMap<String, Object>();
String str = "";
boolean flag = false;
try {
flag = login.toLogin(user);
System.out.println("登录--->"+flag);
}catch (Exception e){
e.printStackTrace();
}
if (flag==true){
resultMap.put("message","success");
}else {
resultMap.put("message","");
}
System.out.println("m"+flag);
return resultMap;
}
完事后反复尝试ajax就是获取不到controller返回值。而且发现每次在提交的时候会发现所有输入框中数字全部清空了,说明页面重新刷新了。
后来问前端同事,需要把submit改成button。因为真正导致页面刷新的是这个type为submit的input标签,强制要求页面刷新,因为页面刷新了,那么ajax返回的信息来到了一个完全陌生的页面,自然返回的是失败啊。
<button type="submit" onclick="tologin()">Submit</button>
改成
<button type="button" onclick="tologin()">Submit</button>
好在是搞定了!