@RequestBody注解Ajax post json List集合数据请求400/415问题

本文介绍了解决Ajax POST请求返回400错误的方法,包括检查JSON数据格式、确保导入了正确的Jackson包版本及避免数据类型转换错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该问题出现在ajax发送post请求时返回错误代码,后台不报任何错误

问题原因和解决方法:

1.post发送的json数据错误

@RequestBody注解是把post请求的整体数据进行处理,@RequestBody后面的参数是和json数据没有关系的,比如

@RequestBody List<CourseVo> courseVos;
//此句的courseVos不用在json数据中包含!!!!!

发送该数据的js为下

$.ajax({
     type: "post",
     url: '/beansOffice/addCourseData',
     dataType:"json",
     contentType:"application/json",
     data: JSON.stringify(this.courseView),//此块注意

     //注意数据是data: JSON.stringify(this.courseView)   
     //而不是data: JSON.stringify({courseVos:this.courseView})
     //两者区别就是有没有把@RequestBody注解后的“courseVos”当为json数据

     success: function (data) {
        if (data.status == 200 && data.body.code == 200)
              alert("提交成功!");
     }
});

2.Spring或maven版本过低导致jackson包没有导入

jackson是spring默认的json处理工具,没有该包则会对一些复杂对象会处理异常
依赖包为下(当前最新):

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.8</version>
</dependency>

3.json数据和对象数据转换出问题

这个问题很容易出,由于异常被吃掉很不容易发现
      比如对象中定义数据 int a;但是你有可能默认值是“”,即空字符串,则也会直接报400错误而后台没有任何异常
     还有一些比如时间类型(data)、布尔(boolean)或自定义类型,建议所有都使用String,自己手动在后台转换,这样报错也会被发现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值