Ajax json交互和SpringMVC中@RequestBody
Ajax json交互和SpringMVC中@RequestBody
标签:
背景
自己提供出去得接口中参数设置为@RequestBody VipPromotionLog vipPromotionLog为一个对象。但是前端人员得处理方式代码如下
var data = {
"userId" : 20142100122,
"userOperationStep" : 2,
"appPlatform": "android",
"app" : 0,
"videoId":123123
};
$.ajax({
url : 'http://localhost:81/online-2c/api/vippromotion',
type : 'POST',
dateType : 'json',
data:data,
success : function(msg){
console.log(msg);
}
})
问题出现
上述情况出现如图一错误
图一

排查
查看这从请求得类型如图二
图二

content-Type为application/x-www-form-urlencoded
而且传输过去的类型是一个对象,那么我们设置的@RequestBody需要的是什么,难道不是一个对象。这里我个人的理解为@RequestBody需要传输过去的是一个字符串并且和其注释的对象的属性一一对应。
解决
办法一
有两种办法解决 第一不改变后台代码的情况下解决办法如下代码
var data = {
"userId" : 20142100122,
"userOperationStep" : 2,
"appPlatform": "android",
"app" : 0,
"videoId":123123
};
$.ajax({
url : 'http://localhost:81/online-2c/api/vippromotion',
type : 'POST',
dateType : 'json',
contentType : 'application/json',
data:JSON.stringify(data),
success : function(msg){
console.log(msg);
}
})
application/json 传输过去的数据为json对象的字符串,data为一个对象,用JSON.stringify转换成对象字符串,其实上面代码和下面的是一样的
var data = '{\n' +
' "userId" : 20142100122,\n' +
' "userOperationStep" : 2,\n' +
' "appPlatform": "android",\n' +
' "app" : 0,\n' +
' "videoId":123123\n' +
' }';
$.ajax({
url : 'http://localhost:81/online-2c/api/vippromotion',
type : 'POST',
dateType : 'json',
contentType : 'application/json',
data:data,
success : function(msg){
console.log(msg);
}
})
办法二
修改后台代码,去除@RequestBody注解。这样的话你传输过去的就是一个对象了,并一一对应,如果没有的话就为空。前端js代码不变。
防止
根据前后端的数据交互类型来进行选择。
Ajax json交互和SpringMVC中@RequestBody的更多相关文章
- SpringMVC中@RequestBody接收前端传来的多个参数
在使用ajax发送请求时,如果发送的JSON数据是一个类中的不同属性,在Controller方法中使用@RequestBody会直接封装进该类中 例如: 前端部分代码 JavaScript <s ...
- java + jquery + ajax + json 交互
前端js部分: $.ajax({ async:true, cache:false, type:"POST", dataType : 'json', url:"/shopp ...
- SpringMVC中@RequestBody引起的400异常处理,返回校验失败具体信息
问题 使用@RequestBody接收一个json数据的时候,如果传入的参数不符合条件,就会直接返回400的error page. 但究竟是为什么会400并没有抛出来.这对大量参数字段的我们来说,排错 ...
- springmvc实现json交互 -requestBody和responseBody
json数据交互 1.为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 2. ...
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
最近angularjs post到后台 400一头雾水 没有任何错误. 最后发现好文,感谢作者 SpringMVC中出现" 400 Bad Request "错误(用@Respon ...
- SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析
SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...
- 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案
我在使用SpringMVC的@RequestBody和@ResponseBody注解处理JSON数据的时候,总是出现415的错误,说是不支持所提交数据格式,我在页面中使用了JQuery的AJAX来发出 ...
- SpringMVC过程中@RequestBody接收Json的问题 总是报415
在SpringMVC中用@RequestBody接收Json的问题,总是报415,经过一翻查找 前台js的post: var postdata = '{"title":" ...
- 在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案
Spring的@RequestBody非常牛x,可以将提交的json直接转换成POJO对象. 正好今天有这样的需求,使用一下,结果一直报415,十分头疼. HTTP 415 错误 – 不支持的媒体类型 ...
随机推荐
- non-transactional
this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(queryString)报错No Hib ...
- Project facet jst.web.jstl has not been defined.
Project facet jst.web.jstl has not been defined. 博客分类: Eclipse Project facet 原版:http://blog.csdn.ne ...
- pyspider框架的599证书问题
使用PySpider 框架出现错误 HTTP 599: SSL certificate problem: unable to get local issuer certificate,如下 HTTP ...
- Hadoop生态圈-Flume的主流source源配置
Hadoop生态圈-Flume的主流source源配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是配置的是Flume主流的Source,想要了解更详细的配置信息请参 ...
- Codeforces 338 D. GCD Table
http://codeforces.com/problemset/problem/338/D 题意: 有一张n*m的表格,其中第i行第j列的数为gcd(i,j) 给出k个数 问在这张表格中是否 有某一 ...
- Comparing Differently Trained Models
Comparing Differently Trained Models At the end of the previous post, we mentioned that the solution ...
- 一个很实用的css3兼容工具很多属性可以兼容到IE6
当你看到这样的效果图是不是已经崩溃了 css3没出来之前大部分人基本都是用图片的方式拼出来的 腾讯邮箱就是这么做的 然后你想和设计说换直角吧.我用图片的好烦的感觉!而且我们还要兼容到ie6 她和你说别 ...
- Quartus II 安装教程—FPGA入门教程【钛白Logic】
Quartus II 工具安装一般分为两个部分,首先是开发工具本身的安装,其次就是器件库的安装,我们可以根据我们的需要选择相应的器件库来安装,这里我们使用Cyclone IV的FPGA,即安装Cycl ...
- imperva—waf 敏感字段显现
imperva WAF中看到的日志内容信息有些都是敏感的 比如登录登出的信息 如何调整敏感信息的现实方式,并可以自定义敏感字段? 这里添加字段就可以了 这样就将******转变为明文了
- RPM Database
RPM Database RPM 不仅在安装.升级.卸载方面工作出色,而且在查询和验证方面也表现非凡.你很久前安装了一个数据库软件,但现在忘记了它的版本号,也不知道它的说明文档的位置,可以通过 RPM ...