ajax与springmvc交互

来源:互联网 发布:软件蓝图设计 编辑:程序博客网 时间:2024/06/02 05:30

前台:

 <!-- 添加新用户 -->
  <div id="addiv" style="display:none">
   <form >
      <p>
          <label style="margin-left:80px;margin-top:20px">编号</label>
          <input  id="aid" type="text" class="in_text" name="userId" >
      </p>
      
      <p>
          <label style="margin-left:80px;margin-top:20px">密码</label>
          <input  id="pwd" type="text" class="in_text" name="password" >
      </p>
      
      <p>
          <label >姓名</label>
          <input  id="aname" type="text" class="in_text" name="name">
      </p>
      
      <p>
          <label >性别</label>
          <input  id="asex" type="text" class="in_text" name="sex">
      </p>
      
      <p>
          <label >职务</label>
          <select  id="aposition" style="margin-left:20px;text-align:center" name="positionId">
              <option value=""></option>
              <option value="01">管理员</option>
              <option value="02">业务员</option>
          </select>
      </p>
     

//增加
    $("#uadd").click(function(){
        layer.open({
        offset: ['100px'],
        skin: 'layui-layer-lan',
        shade: [0.4, '#393D49'],
          type: 1,
          title:"添加新用户",
          area: ['500px', '350px'],
          content: $("#addiv") //这里content是一个普通的String
        });        
    });
    
    //提交添加
    $("#add").click(function(){
        var id=$("#aid").val();
        var name=$("#aname").val();
        var pwd=$("#pwd").val();
        var sex=$("#asex").val();
        var position=$("#aposition").val();
        var privilage=$("#aprivilage").val();
        
        $.post("add",{"id":id,"pwd":pwd,"sex":sex,"name":name,"position":position,"privilage":privilage},function(data){
            alert(data.result)
             if(data.result=="SUCCESS"){
                layer.msg("添加成功");
                window.location.href="xtgl/userControl";
            }else{
                layer.msg("添加失败",{
                    time: 1000,
                });
            }
        });  
    });


后台:

//添加新用户
    @RequestMapping( value="/add",method = RequestMethod.POST)
    public ModelAndView add(
            @ModelAttribute("id") String id,
            @ModelAttribute("name") String name,
            @ModelAttribute("sex") String sex,
            @ModelAttribute("pwd") String password,
            @ModelAttribute("position") String positionId,
            @ModelAttribute("privilage") String privilageId){    
    
        Position position=positionService.getById(positionId);
        Privilage privilage=privilageService.getById(privilageId);
        
        User user=new User(id,name,password,sex,position,privilage);
        userService.save(user);
        
        View view=new MappingJacksonJsonView();
        ModelAndView mav=new ModelAndView(view);
        mav.setViewName("xtgl/userControl");
        mav.addObject("result", "SUCCESS");
        System.out.println("mav添加: "+mav);
        return mav;
    }


在页面上点击添加的时候,会弹出一个框,这个框就是本页面上的一个 div ,说到底他们是一个页面。 向后发起请求时,也能返回来,但是 model里面的值时而得到,时而得不到。这个梗就出现在 红色背景那行代码,当有这行代码时,就得不到返回值,如果没有,就可以得到,实在搞不懂。


总结,因为ajax是局部刷新,所以,,在向后台发起请求时,应该默认返回发起请求的地方,而不是指定返回整个页面吧.如果是整个页面发起的请求,那么返回的应该是发起请求的页面,如果在后台指定了返回的视图,即使是局部请求,也会返回整个页面,然后就接收不到model里面的值。springmvc 默认返回的试图,就是发起请求的视图,ajax不同的是,会直接返回到当前视图ajax请求开始的地方,比如,一个function。还有很重要的一点:  View view=new MappingJacksonJsonView();  这行代码很重要,他起到返回默认视图的作用,如果不写,怎不能返回。



0 0
原创粉丝点击