Ajax提交数据,进行前后台数据交互(ajax系列二)

HTML代码:

<input class="form-control" id="username" name="username" type="text"/>
<input class="form-control" id="password" name="password" type="password"/>

<button type="button" onclick="loginSubmit()">立即登录</button>

JS---jQuery代码:

function loginSubmit() {

        var username = $("#username").val();    // 获取id为username的<input>框数据
        var password = $("#password").val();    // 获取id为password的<input>框数据
        // 判断,做表单验证
        if (username.length == 0) {
            $("#username").tips({msg: "请输入用户名。"});
            return;
        }
        if (password.length == 0) {
            $("#password").tips({msg: "请输入密码。"});
            return;
        }
        // Ajax提交数据
        $.ajax({
            url: "admin/check_login",    // 提交到controller的url路径
            type: "post",    // 提交方式
            data: {"username": username, "password": password},  // data为String类型,必须为 Key/Value 格式。
            dataType: "json",    // 服务器端返回的数据类型
            success: function (data) {    // 请求成功后的回调函数,其中的参数data为controller返回的map,也就是说,@ResponseBody将返回的map转化为JSON格式的数据,然后通过data这个参数取JSON数据中的值
                if (data.message == "success") {    
                    //跳转到系统首页
                   ......
                } else {
                    ......
                }
            },
        });
    }

Ajax中success回调函数: 
success: function(data)是Ajax在请求成功后自动调用的,所以这个方法是Ajax调用的,那么该方法的参数(data)便是Ajax提供的了。其中function(data)的参数data是客户端请求后台,由后台返回的值。

Controller代码:

 @RequestMapping(value = "check_login",method = RequestMethod.POST)
    @ResponseBody
    public Map checkLogin(
            @RequestParam(value = "username") String username,
            @RequestParam(value = "password") String password){
        Map<String,Object> map = new HashMap<>();
        // 调用service查询数据库验证登录信息
        ......
        // 判断用户是否存在
        if (user != null){
                map.put("message", "success");
                return map;
        } else {
            ......
        }
    }

ajax会根据其中的url来找到对应的controller方法,@RequestParam会得到Ajax传过来的数据(即:data: {“username”: username, “password”: password}),并将其自动传入到方法形参中。service就可以使用形参值来获取数据了。controller方法调用完成后,Ajax会执行success回调函数,判断controller返回的map中的值是否为success。 
使用Ajax提交代替传统的form表单提交的好处在于,Ajax使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。
 

猜你喜欢

转载自blog.csdn.net/weixin_38610651/article/details/86687431