spring-mvc ajax传递用户对象到后台

目标

在Spring-mvc项目中,希望 可以实现传递一个对象到后台,并且可以接受到后台传来的数据这样的功能,采取的方式是ajax。

实现方法

  • ajax代码
<script type="text/javascript" language="javascript">
 var boolstoreName=false;
 var boolpassWord=false;
 function check(){
     var un = document.getElementById("username").value;
     var pwd = document.getElementById("password").value;
     if(un.length==0&&pwd.length==0){
            alert("用户名和密码都为空");
            return;
        }
     if(un.length==0){
            alert("用户名为空");
            return;
        }
     if(pwd.length==0){
            alert("密码为空");
            return;
        }
     var pwd_md5=hex_md5(pwd);
     $.ajax({
         cache: false,
         async: false,
         type: "POST",
     dataType: "json",
         data: {  
               "username": un,  
                "password": pwd_md5  
            },
         url: "Check",
     success: function(data) {
         var backdata=JSON.parse(data); //传回的是json字符串,要先把它转换成js中的类对象,
         alert("success"); 

             if("ok"==data.check_type) {
                 boolpassWord = true;   
             }else{
                 divpassword.innerHTML='<font  color="red" style="text-align:center">用户名和密码不匹配!</font>';
                 boolpassWord=false;
             }
         },
     error : function(XMLHttpRequest,textStatus,errorThrown) {
         alert("error方法");
         divpassword.innerHTML='<font  color="red" style="text-align:center">用户名和密码---不匹配!</font>';
         boolpassWord = false;   
         }
   }); 
   if(boolpassWord==false){
     return;
   }else{
     document.getElementById("password").value=pwd_md5;
     document.loginForm.submit();
    }
 }
  </script>
  • form表单代码(jsp)
<form:form method="POST" modelAttribute="user" action="loginAction"  class="m-form m-form-ht n-login" id="loginForm" name="loginForm" onsubmit="return false;" autocomplete="off" >
    <div class="fmitem">
        <label class="fmlab">用户名:</label>
        <div class="fmipt">
            <form:input class="u-ipt" type="username" name="username" id="username" path="username"/>
        </div>
    </div>
    <div class="fmitem">
        <label class="fmlab">密码:</label>
        <div class="fmipt">
            <form:input id="password" class="u-ipt" type="password" name="password" path="password"/>

            <span class="tips" id="divpassword"></span>
        </div>
    </div>
    <div class="fmitem fmitem-nolab fmitem-btn">
        <div class="fmipt">
            <button type="submit" class="u-btn u-btn-primary u-btn-lg u-btn-block" onClick="check()">登 录</button>
        </div>
    </div>
</form:form>
  • 后台代码
    @RequestMapping(value = "/Check", method = { RequestMethod.POST })
    @ResponseBody
    public String Check(@ModelAttribute User user) {
        System.out.println("Check方法");
        User buy_user = new User();
        buy_user.setUsername("and");
        buy_user.setPassword("794aad24cbd58461011ed9094b7fa212");

        User salle_user = new User();
        buy_user.setUsername("but");
        buy_user.setPassword("64c9ac2bb5fe46c3ac32844bb97be6bc");

        boolean falg = false;
        if (user.getUsername().equals(buy_user.getUsername())
                && user.getPassword().equals(buy_user.getPassword())) {
            // 买家的信息确认
            falg = true;
        } else if (user.getUsername().equals(salle_user.getUsername())
                && user.getPassword().equals(salle_user.getPassword())) {
            // 卖家的信息确认
            falg = true;
        }
        // 验证用户名和密码的时候如果没有发现此用户,可以返回一个error json错误给ajax,这样就可以使其跳转到ajax的error方法里。
        Map<String, String> map = new HashMap<String, String>();
        map.put("check_type", "ok");

        // 上面的map不是json当然是不可以用于返回的,于是呢我们要把它搞成json字符串,你也可以自己去拼json字符串。
        JSONObject json = JSONObject.fromObject(map);

        if (falg) {
            check_return = json.toString(); // 正确就将json 字符化
        } else {
            map.put("check_type", "false");
            json = JSONObject.fromObject(map);
            check_return = json.toString();
        }
        System.out.println("json----:" + getCheck_return());
        return check_return;
    }

总结

这个方法是可以实现的,亲测有效,网上有好多代码都有问题,尝试了很多次才找到一个有效的方法,希望可以帮助有需要的人,一天一个坑,天天坑快乐。

参考博客

springmvc ajax传递对象至controller的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值