毕业设计,使用springMVC+AJAX(jquery)实现登录表单验证问题,将遇到的问题记录下来
1 controller层可以接收到前台请求参数,但是success和error都不执行
无图言叼
这是js
-
<script type=
"text/javascript">
-
$(
document).ready(
function(){
-
$(
"#su").click(
function(){
-
$.ajax({
-
type:
"POST",
-
url:
"<%=basePath%>manager/host.action",
-
data :{
-
manUsername : $(
"#manUser").val(),
-
manPassword : $(
"#manPass").val(),
-
},
-
async:
true,
-
dataType:
"json",
-
success :
function(param){
-
alert(
"登陆成功");
-
},
-
error :
function(){
-
alert(
"登录失败");
-
}
-
});
-
});
-
});
-
</script>
这是jsp表单
<form role="form" method="post" id="login">
<div class="form-group">
<label for="manUsername">用户名:</label>
<input id="manUser" class="form-control" type="text" name="" />
</div>
<div class="form-group">
<label for="manPassword">密码</label>
<input id="manPass" class="form-control" type="password" name="" />
</div>
<input id="su" class="btn btn-success" type="submit" value="登录" />
<input class="btn btn-success" type="reset" value="取消" />
</form>
别问我发生了啥,后台controller层可以打印出来用户名,但是success和error都不执行
想想也是好气啊,连百度带问同学,终于发现了一个让自己膀胱爆炸的错误。。对!就是data里面多了一个逗号
好气哦
2 点击登录按钮之后呢,页面自动刷新,最直观的显示就是警告框一闪而过。。。。
这个问题还好点,百度了一下,发现form表单就是自动刷新的,如果想阻止他自动刷新的话,就得将form换成div,或者将submit换成button.我采用的是后者,问题解决,但是回车键就不能用了,只能手动点击登录,难道要再绑定一个回车事件?回来试验一下
3 登录后,ajax不执行success,而是执行error
这个问题也挺坑,但是百度是强大的,亲爱的度度告诉我,是我的后台返回值有问题,好,那老子给你看看我的后台controller
-
@RequestMapping(value =
"host.action")
-
public
@ResponseBody
-
String managerWantToLogin(Manager man,Model model) {
-
System.out.println(man.getManUsername());
-
if(managerService.checkLogin(man)) {
-
List<Dishes> list = dishesService.findDishesListByType(
null);
-
List<DishesType> didhesTypeList = dishesTypeService.findDidhesTypeList();
-
List<Orders> orderList = ordersService.getOrderList(
null);
-
model.addAttribute(
"orderList", orderList);
-
model.addAttribute(
"dishesTypeVoList", didhesTypeList);
-
model.addAttribute(
"dishesVoList", list);
-
return
"YES";
-
}
else {
-
return
"NO";
-
}
-
-
}
妈的,怕不怕,我加上注解了
结果,度度一声冷笑
“你返回的是个字符串,那你告诉我,你的dataType还有何用,不报错更待何时”
可乐,卒。
总结 1 一定要细心,想什么中英文引号,逗号之类的一定不要忘了
2 form配合submit会自动刷新,将submit改成button就好了(但是回车键就不能登录了,可能需要重新绑定事件)
3 如果后台返回的是个简单的字符串,而不是一个对象,那么dataType:json就不要加了,他会认为你这个家伙不厚道,说好的返回json,而你个***却给我个字符串,老子不伺候了,自己玩去吧