该问题出现在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,自己手动在后台转换,这样报错也会被发现

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐