springmvc 使用jq传递json数据时出现415错误
出现415错误是因为解析json时出现了错误,通过排查几点就能解决。
样例:
<script> function requestByJson() { var datatest = {"id":0,"username":"kinome","password":"pwd"}; $.ajax({ type : 'post', url : '${pageContext.request.contextPath}/updateUserInfo.action', dataType:"json", //设置contentType类型为json contentType : 'application/json;charset=utf-8', //json数据 data : JSON.stringify(datatest), //请求成功后的回调函数 success : function(data) { alert(data.id+" "+data.username+" "+data.password); } }); } </script>
必须设置:
dataType:"json" contentType : 'application/json;charset=utf-8' data : JSON.stringify(存放json的变量) // 这里存在一个对象的问题,所以需要封装起来使用
controller方面:
必须配置: consumes = "application/json" 用来接收json数据
(按照上图的编写方式就能正常接收并返回json数据)
spring所有依赖版本: 4.1.7.RELEASE
spring-servlet.xml 必须配置 <mvc:annotation-driven /> 用来进行自动注册并加载jackson相关文件
pom.xml必须配置jackson相关依赖,且 (重点)spring版本和jackson版本如果不兼容也会导致无法解析json,进而提示415错误
<!--jackson相关依赖 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.4</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.4</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.5.4</version> </dependency>
成功返回json数据并通过jq的回调函数执行: