SpringBoot中采用Ajax请求实现前台与后台的数据交互的方式

本文深入探讨了前后端交互的两种常见方式,一是通过FormData发送表单数据,二是以JSON格式发送数据。详细介绍了jQuery的ajax方法使用及后端Spring框架的处理方式。
方式一
前台方式1:
$(function(){
        $("#reg-btn").click(function () {
            var formdata = new FormData();
            formdata.append("userName", $("#userName").val());
            formdata.append("userEmail", $("#userEmail").val());
            formdata.append("userPassword", $("#userPassword").val());
            formdata.append("userPasswordAgain", $("#userPasswordAgain").val());
            alert($("#userPasswordAgain").val());
            $.ajax({
                url: "/doRegister",
                type: "POST",
                contentType: false,  //注意点,必须是 false
                processData:false,   //注意点,必须是 false
                //dataType: "json", 主要说明的是,他是指定返回值类型(response),而不是发送的数据类型
                data: formdata,
                success: function (response) {
                	//由于后台传过来的 Map 类型的数据,所以不需要使用var result = JSON.parse(response);再解析成Json格式了
                    if(response.code === "100"){
                        $.each(response, function (k,v) {
                            $("#"+k).parent().prev("span").css("color","red").text(v);
                        });
                    }
                    else{
                        window.location.href = "/index";
                    }
                }
            })
        })
    });
前台方式2:
$(function(){
        $("#reg-btn").click(function () {
            $.ajax({
                url: "/doRegister",
                type: "POST",
                data: $("#form").serialize(), //区别在这里,直接发送一个表单
                success: function (response) {
                    // var result = JSON.parse(response);
                    if(response.code === "100"){
                        $.each(response, function (k,v) {
                            $("#"+k).parent().prev("span").css("color","red").text(v);
                        });
                    }
                    else{
                        window.location.href = "/index";
                    }
                }
            })
        })
    });
后台
@PostMapping("doRegister")
@ResponseBody  //注意点,一定要返回数据,不能跳转
//返回的数据类型是Map
public Map<String, String> doRegister(@Validated User user, BindingResult result, Model model, HttpServletRequest request)

方式二

前台

$(function(){
        $("#reg-btn").click(function () {
            $.ajax({
                url: "/doRegister",
                type: "POST",
                contentType:"application/json;charset=utf-8",  //注意,这里是json格式
                data: JSON.stringify({
                    userName: $("#userName").val(),
                    userEmail: $('#userEmail').val(),
                    userPassword: $('#userPassword').val(),
                    userPasswordAgain: $('#userPasswordAgain').val(),
                }),
                success: function (response) {
                    if(response.code === "100"){
                        $.each(response, function (k,v) {
                            $("#"+k).parent().prev("span").css("color","red").text(v);
                        });
                    }
                    else{
                        window.location.href = "/index";
                    }
                }
            })
        })
    });
后台
@PostMapping("doRegister")
@ResponseBody
//接收的参数前面一定要加@RequestBody注解
public Map<String, String> doRegister(@Validated @RequestBody  User user, BindingResult result, Model model, HttpServletRequest request)

@ResponseBody的详细介绍,参见这篇博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值