毕业设计,使用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,而你个***却给我个字符串,老子不伺候了,自己玩去吧

京公网安备 11010502036488号