ajax发送post请求报415和400

背景:点击按钮弹出一个表单对数据进行修改,点击表单的提交按钮会发送post请求。
报415是请求头的contentType不对劲,设置成:

contentType: "application/json",

400是因为前端发送的数据跟后端要求的格式不一样,要在前端进行序列化:

data: JSON.stringify(field),

完整的ajax:

 //修改表单监控(修改)
        form.on('submit(fromSubmitGradeInfo)', function(data) {
            var field = data.field; //获取提交的字段
            console.log(field);

            $.ajax({
                //请求方式
                type: "POST",
                //接口
                url: "/updGra",
                //序列化
                data: JSON.stringify(field),
                //请求头
                contentType: "application/json",
                success: function (data)
                {
                    window.location.reload();
                }
            });
        });

推荐看这篇文章:400和415解决方法

更新,如果使用layui框架,ajax不执行success和error可参考:ajax()不执行success也不执行error的分析和解决

@RequestParam和@RequestBody的区别:@RequestBody和@RequestParam注解以及返回值,ajax相关知识点

总结一下get请求对应的后台代码和post请求对应的后台代码

get

 $.ajax({
                        type: "GET",
                        url: "/delGra",
                        data: {"id": obj.data.gradeId},
                        //返回的数据类型
                        dataType: "json",
                        success: function(data){
                            if(data.code==0){
                                layer.alert("删除成功");
                            }else{
                                layer.alert("删除失败");
                            }
                        },
                        error: function(data){
                            console.log("code",data.code);
                            console.log("msg",data.msg);
                            location.reload(true);
                        }
                    });
    @GetMapping("/delGra")
    @ResponseBody
    public ResultData delGrade(@RequestParam("id") Integer gradeId){
        System.out.println("接收到的id:"+gradeId);
        return gradeService.delGrade(gradeId);
    }

post

$.ajax({
                type: "POST",
                url: "/updGra",
                data: JSON.stringify(field),
                //浏览器发送给服务器的数据类型
                contentType: "application/json",
                //浏览器希望的返回值类型
                dataType : "json",
                success: function (data)
                {
                    if(data.code==0){
                        layer.alert("修改成功");
                        table.reload("table-GradeInfo");//id
                    }else{
                        layer.alert("修改失败");
                    }
                },
                error:function (data) {
                    console.log("code",data.code);
                    console.log("msg",data.msg);
                    location.reload(true);
                }
            });
     @PostMapping("/updGra")
    @ResponseBody
    public ResultData updGrade(@RequestBody Grade grade){
        return gradeService.updGrade(grade);
    }

在这里插入图片描述

点击添加按钮应弹出一个表单,但是出现以下错误:
在这里插入图片描述
代码如下:

 //添加
            add: function () {
                console.log("点击添加按钮");
                //隐藏id
                //$("#displayIdNone.value").css("display","none");
                //表单的内容清空
                $("#GradeInfoForm")[0].reset();
                layui.form.render();
                console.log("打开表单");
                layer.open({
                    type: 1,
                    title: "年级详情",
                    area: ['300px', '300px'],
                    btn: ['添加'], //弹出框的宽高
                    content: $("#GradeInfoForm"), //这里content是一个普通的String
                    //content: $('#id') //这里DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响
                    yes: function(index, layer){
                        //触发表单提交
                        $("#form-GradeInfo-submit2").trigger('click');
                    }
                });
            }

这句出错,百度了一下有可能是Jquery版本过低,这里用的是1.8.2

 $("#GradeInfoForm")[0].reset();
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值