springmvc传递json数据报415错误

_Neo 2016-01-08 01:27:14
想用springmvc来传递json数据然后返回,不知道为什么报错415,如下图:

ajax代码:


user对象:


controller代码:


浏览器调试:


出错页面:





请问究竟是什么问题导致的???网上说的办法好像都不行
1.已经添加jackson-mapper-asl-1.9.13.jar和jackson-core-asl-1.9.13.jar两个包
2.springmvc.xml中已经写了<mvc:annotation-driven></mvc:annotation-driven> 自动注册驱动

3.data使用data:JSON.stringify('{name:"xiaoming",age:18}'), 依然报同样的错,没有效果



...全文
6898 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
softFE 2019-08-09
  • 打赏
  • 举报
回复
不该结贴吗? 既然人家已经答出来了.
  • 打赏
  • 举报
回复
我把外头的双引号都换成了单引号,key value用双引号,可以通过 //请求是json,输出是json function requestJson(){ alert("data"); $.ajax({ type:'post', url:'${pageContext.request.contextPath}/requestJson.do', contentType:'application/json;charset=UTF-8', data:'{"name":"iphone6","price":"5210"}', success:function(data){//返回json结果 alert(data); console.log(data.name); console.log(data.price); } });
MrZero404 2017-12-21
  • 打赏
  • 举报
回复
引用 22 楼 qq_30136589 的回复:
以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以将一个对象或者List传到Java端,而java的Controller中要使用@RequestBody即可绑定对象或者List.不信你试试! JavaScript 代码:
<script type="text/javascript">  
    $(document).ready(function(){  
        var saveDataAry=[];  
        var data1={"userName":"test","address":"gz"};  
        var data2={"userName":"ququ","address":"gr"};  
        saveDataAry.push(data1);  
        saveDataAry.push(data2);         
        $.ajax({ 
            type:"POST", 
            url:"user/saveUser", 
            dataType:"json",      
            contentType:"application/json",               
            data:JSON.stringify(saveData), 
            success:function(data){ 
                                       
            } 
         }); 
    });  
</script> 
Java代码
    @RequestMapping(value = "saveUser", method = {RequestMethod.POST }}) 
    @ResponseBody  
    public void saveUser(@RequestBody List<User> users) { 
         userService.batchSave(users); 
    } 
终于搞定了 谢了,哥们
stonehyl 2017-06-29
  • 打赏
  • 举报
回复
data : { name:value1,age:value2 } dataType : "json", 在把contentType去掉,这个不用写,后台的代码不用更改。
Leonis丶L 2017-06-28
  • 打赏
  • 举报
回复
415是json格式错误的吧。应该是datatype的问题
lyn584238910 2017-06-27
  • 打赏
  • 举报
回复
前后台的提交方式一样么;
  • 打赏
  • 举报
回复
dataType : 'text', 试试
mrgaoang 2017-06-27
  • 打赏
  • 举报
回复
415是解析json的时候的错误,无法解析。 1、试试让你的User类继承Serializable 2、传过去的data不要外层的单引号 data:{ name:value1,age:value2 }
_小_小_ 2017-06-26
  • 打赏
  • 举报
回复
引用 26 楼 opiqi 的回复:
难道ajax请求对应后台部分不应该加@ResponesBody吗???
你这个是response 他那个是request 不一样的. 返回 一个对象 的时候 需要 加上response body
  • 打赏
  • 举报
回复
难道ajax请求对应后台部分不应该加@ResponesBody吗???
本恒 2017-06-25
  • 打赏
  • 举报
回复
楼主问题解决了么,我最近看Spring MVC解析json数据这一块也遇到相同问题,在网上收有3中方法 1:要在配置里面增加<mvc:annotation-driven /> 2:需要在ajax里面增加contentType:"application/json" 3:需要添加jacksonJSON-all-1.9.8.jar包 但是我这3中方法都试过了,任然包错415 楼主解决了这个问题能分享下么,tks!
ty0415 2017-04-08
  • 打赏
  • 举报
回复
JS请求加上: dataType:"json" Java类加上 @RequestMapping(value = "/jsonTest",consumes = "application/json") 重点在consumes = "application/json"
podd 2017-04-07
  • 打赏
  • 举报
回复
加上dataType和error:function再看有什么问题
qq_30136589 2017-04-07
  • 打赏
  • 举报
回复
以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以将一个对象或者List传到Java端,而java的Controller中要使用@RequestBody即可绑定对象或者List.不信你试试! JavaScript 代码:
<script type="text/javascript">  
    $(document).ready(function(){  
        var saveDataAry=[];  
        var data1={"userName":"test","address":"gz"};  
        var data2={"userName":"ququ","address":"gr"};  
        saveDataAry.push(data1);  
        saveDataAry.push(data2);         
        $.ajax({ 
            type:"POST", 
            url:"user/saveUser", 
            dataType:"json",      
            contentType:"application/json",               
            data:JSON.stringify(saveData), 
            success:function(data){ 
                                       
            } 
         }); 
    });  
</script> 
Java代码
    @RequestMapping(value = "saveUser", method = {RequestMethod.POST }}) 
    @ResponseBody  
    public void saveUser(@RequestBody List<User> users) { 
         userService.batchSave(users); 
    } 
AQ_xiaobin 2016-09-29
  • 打赏
  • 举报
回复
加个json在后面
sunhuwh 2016-09-28
  • 打赏
  • 举报
回复
请debug一下,看是否进入这个方法, 如果没有进入这个方法: 1.是不是因为接收参数出问题了,这个时候,你就先将@ResponseBody User user改为String name。 假如成功了,那么代表参数有问题,如果还没成功。 用这个js试一下:$.post(url,{name:"123"},function(data){console.info("SUCCESS")})
Rains_ 2016-09-27
  • 打赏
  • 举报
回复
同样问题.请问楼主解决了吗 '{"username":"name"}' 不会报错. 去掉最外面的双引号返回400
y1丶名 2016-06-26
  • 打赏
  • 举报
回复
引用 14 楼 parkour_ 的回复:
请问传递json是只添加这两个jar包吗?jackson-mapper-asl-1.9.13.jar和jackson-core-asl-1.9.13.jar两个包
缺jar 我用的是jackson-all, jackson-annotations, jackson-databind, jackson-core ps.all包含(mapper)
a ni you 2016-01-12
  • 打赏
  • 举报
回复
把控制器中的@RequestBody User user 换成@ModelAttribute User user 前端ajax的参数 去掉外面的' '使用正确的json格式
加载更多回复(14)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧