通过ajax和spring 后台传输json数据

Posted nadech

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过ajax和spring 后台传输json数据相关的知识,希望对你有一定的参考价值。

在通过ajax从页面向后台传数据的时候,总是返回415(Unsupported media type)错误,后台无法获取数据。如下图所示:

在尝试解决这个问题的时候,我们首先要理解一下概念:

  1. @requestmapping @ requestbody 和@responsebody的用法,这个有很多博客可以参考。
  2. json对象和json字符串的区别。
    person ={"name":"nadech"} //这个是json对象
    person="{"name":"nadec"}"//这个是json字符串
    两者可以通过json.parse()和json.stringify()转换。

一、ajax向后台@Requestbody传输json数据(json字符串)的过程

如图,首先我们要保证传输的Content-type:application/json charst="utf-8
传输的json字符串如图中第二个箭头指出的形式,而不是一堆字母。
通过在ajax中指定content-type和对data进行JSON.stringify()可以实现,然后检查如上图的header,看看是否正确。

二、不存在以上错误,考虑jackson和spring mvc的版本兼容问题以及springmvc的配置。

其中,在配置方面,如下图

要注意红色箭头指出的代码这句代码一般情况是直接跟在上面那句扫描controller包后面的。从字面理解的意思就是mvc的注解驱动。mvc:annotation-driven/会自动注册两个bean,分别为DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。是springmvc为@controller分发请求所必须的。除了注册了这两个bean,还提供了很多支持,其中一项就提到了读写JSON的支持(Jackson)。
除此之外,对于IE浏览器的兼容问题,也需要配置,具体可参照博客

总结:

需要考虑传输的json格式以及jackson的版本和配置问题。

以上是关于通过ajax和spring 后台传输json数据的主要内容,如果未能解决你的问题,请参考以下文章

AJAX如何解析后台传来的json数据?

Ajax传输Json和xml数据

Web传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时

json前后台传输,以及乱码中文问题探讨

使用Jquery.AJAX方法和PHP后台数据交互小结

spring mvc $.ajax没有指定contentType ,导致后台无法接收到数据