毕业设计,使用springMVC+AJAX(jquery)实现登录表单验证问题,将遇到的问题记录下来

1 controller层可以接收到前台请求参数,但是success和error都不执行

无图言叼

这是js

 
  1. <script type= "text/javascript">
  2. $( document).ready( function(){
  3. $( "#su").click( function(){
  4. $.ajax({
  5. type: "POST",
  6. url: "<%=basePath%>manager/host.action",
  7. data :{
  8. manUsername : $( "#manUser").val(),
  9. manPassword : $( "#manPass").val(),
  10. },
  11. async: true,
  12. dataType: "json",
  13. success : function(param){
  14. alert( "登陆成功");
  15. },
  16. error : function(){
  17. alert( "登录失败");
  18. }
  19. });
  20. });
  21. });
  22. </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

 
  1. @RequestMapping(value = "host.action")
  2. public @ResponseBody
  3. String managerWantToLogin(Manager man,Model model) {
  4. System.out.println(man.getManUsername());
  5. if(managerService.checkLogin(man)) {
  6. List<Dishes> list = dishesService.findDishesListByType( null);
  7. List<DishesType> didhesTypeList = dishesTypeService.findDidhesTypeList();
  8. List<Orders> orderList = ordersService.getOrderList( null);
  9. model.addAttribute( "orderList", orderList);
  10. model.addAttribute( "dishesTypeVoList", didhesTypeList);
  11. model.addAttribute( "dishesVoList", list);
  12. return "YES";
  13. } else {
  14. return "NO";
  15. }
  16. }

妈的,怕不怕,我加上注解了

结果,度度一声冷笑

“你返回的是个字符串,那你告诉我,你的dataType还有何用,不报错更待何时

可乐,卒。





总结  1 一定要细心,想什么中英文引号,逗号之类的一定不要忘了

        2 form配合submit会自动刷新,将submit改成button就好了(但是回车键就不能登录了,可能需要重新绑定事件)

3 如果后台返回的是个简单的字符串,而不是一个对象,那么dataType:json就不要加了,他会认为你这个家伙不厚道,说好的返回json,而你个***却给我个字符串,老子不伺候了,自己玩去吧


苟利编程生死以,岂因BUG趋避之