在用 spring mvc 写应用的时候发现jquery传递的【json数组对象】参数后台接收不到,多订单的处理,ajax请求:

var cmd =  {orders:[{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]}  $.ajax({  url : url,  type : "POST",  datatype:"json",  data : cmd,  success : function(data, stats) {  if (stats == "success") {  //   window.location.href="/yc"
                    }  },  error : function(data) {  alert("请求失败");  }  });  

开始如何传后台用 @RequestParam 去接收如何都接不到,分析下请求头,原来是json格式没转换

Origin:http://localhost
Referer:http://localhost/test/myorder
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
X-Requested-With:XMLHttpRequest
Form Dataview URL encoded
orders[0][storeId]:0a1
orders[0][address]:西斗门路2号
orders[0][goods][0][goodsId]:1
orders[0][goods][1][goodsId]:2
orders[0][goods][2][goodsId]:3
orders[1][storeId]:0a1
orders[1][address]:西斗门路2号
orders[1][goods][0][goodsId]:4
orders[1][goods][1][goodsId]:4
orders[1][goods][2][goodsId]:5
Response Headersview source
Content-Length:1051
Content-Type:text/html;charset=utf-8
Date:Mon, 26 Nov 2012 16:10:07 GMT
Server:Apache-Coyote/1.1  

通过观察,orders[0][storeId]:0a1 
orders[0][address]:西斗门路2号 
orders[0][goods][0][goodsId]:1 变成了多维数组的格式传递,没有按json对象的方式传递(原以为 jquery会自动转的,可惜我想多了,所以出现了乌龙)。

下了个jquery的json插件,jquery.json-2.4.js 转了下json;但是问题又来了,传的格式正确但是后台还是接不到,打印了下request.getParameterMap(),参数按json格式传进来,但是接的方式又出现了问题,用string接肯定不行,String数组接也接不到,List也接不到,网上查查相关Controller的接收json对象的方式,需要用@RequestBody来进行接收,为了方便干脆把 orders去掉 直接用json数组

var cmd =  [{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]  

后台用

(@RequestBody List orders)  

检查下参数写法,应该没错,测试之后还是有问题 报了这样一个错误: 
POST http://localhost/test/order 415 (Unsupported Media Type) 这个问题应该是前台请求过程中没有指明contentType,ajax中加上contentType: "application/json; charset=utf-8",再测试,果然可以了。完整代码如下:
ajax:

var cmd =  [{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]  $.ajax({  url : url,  type : "POST",  datatype:"json",  contentType: "application/json; charset=utf-8",  data : $toJSON(cmd),  success : function(data, stats) {  if (stats == "success") {  //   window.location.href="/yc"
                    }  },  error : function(data) {  alert("请求失败");  }  });  

Controller method:

@RequestMapping(value = "/order", method = RequestMethod.POST)  public  ModelAndView order(@RequestBody List<Map<String,Object>> orders) {  System.out.println("orders size:" + orders.size());
}  

以上希望能为遇到类似问题的朋友提供一些帮助。

Spring MVC Controller与jquery ajax请求处理json

转载于:https://www.cnblogs.com/zhujiabin/p/5091051.html

Spring MVC Controller与jquery ajax请求处理json相关推荐

  1. jquery ajax json传递数组,jQuery ajax 传递JSON数组到Spring Controller

    jQuery ajax传递单个JSON对象到后台很容易,这里记录的是传递多个JSON对象组成的JSON数组到java 后台,并说明java如何解析JSON数组. 1.js代码 var relation ...

  2. JavaWeb笔记:第07章 MVC |EL |JST |Filter |Listener |JQuery |AJAX |Maven |JSON |Redis |Linux |Nginx

    JavaWeb笔记:第07章 MVC |EL |JST |Filter |Listener |JQuery |AJAX |Maven |JSON |Redis |Linux |Nginx 1. MVC ...

  3. java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...

    Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...

  4. Spring MVC Controller中返回json数据中文乱码处理

    问题 在使用spring MVC Controller的过程中,发现返回到客户端的的中文出现乱码.后台Java代码: @RequestMapping(value = "/upload&quo ...

  5. Spring MVC Controller 要点

    2019独角兽企业重金招聘Python工程师标准>>> 今天看到一篇讲解 Spring MVC Controller 的文章,比较详细,顺道翻译下. 在 Spring MVC 中,我 ...

  6. spring mvc controller间跳转 重定向 传参

    spring mvc controller间跳转 重定向 传参 1. 需求背景     需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形 ...

  7. json ajax查询,jQuery AJAX和JSON性能查询

    我将一些JSON数据存储在文本文件中,以便在我的页面中使用jQuery Ajax进行查询.目前,我的文本文件包含大约10个数据面(可能包含额外的30个数据面). JSON数据包含这些问题的问题和答案. ...

  8. Spring mvc Controller间跳转/重定向/传参

    Spring mvc Controller常用写法 1.ModelAndView @RequestMapping(value = "/getxxxList.html") publi ...

  9. Spring MVC前后台交互(前台ajax传递数据,后台controller接收数据返回json对象)

    1.导入jar包 2.JS中用ajax传递用户数据 var data={origin:"register",tel:tel,pwd:pwd};$.ajax({url : " ...

最新文章

  1. windows中wnmp设置nginx启动脚本
  2. Python助力期末
  3. 目前电子计算机已经发展到______阶段,《全国高校计算机联合考试广西考区一级笔试试题卷.doc...
  4. (转)Django ==== 实战学习篇九 在session中保存购物车
  5. 如何保证elasticsearch和mysql数据库的数据同步?
  6. PSIM软件BUCK转换数字控制官方例程
  7. Redis字符串类型的操作
  8. 群晖NAS教程(一) 、利用Docker安装MySQL8并远程访问
  9. cowpatty无线破解之——WPA-PSK字典攻击
  10. OS X系统U盘安装的问题
  11. 数据建模-经典教程笔记
  12. 删除威金病毒残留的_desktop.ini文件(转贴)
  13. springboot毕设项目流云医疗管理系统davy2(java+VUE+Mybatis+Maven+Mysql)
  14. C51_将按键次数写入AT24C02,再读出送LCD显示
  15. 七夕了,给你的那个TA画上一箭倾心吧~
  16. 分享Silverlight/WPF/Windows Phone一周学习导读(1月3日-1月8日)
  17. dirname $0
  18. insmod 加载模块过程、modprobe 与 insmod的区别 、lsmod命令
  19. 即使隐藏脸部也没用 最新步态识别技术将用来辨识嫌疑犯
  20. 搭了我半年顺风车的同事,把我拉黑了:和任何人走太近,都是一场灾难

热门文章

  1. [LeetCode][JavaScript]Roman to Integer
  2. POJ-1664 放苹果 动态规划思想解组合数学
  3. irrlicht v1.6 例程18 Splitscreen
  4. python画图颜色种类_Python可视化|matplotlib07-python colormap(颜色映射)(三)
  5. zendguard php5.4,ZendGuardLoader6.0.0支持PHP5.4.x系列
  6. Endnote生成的中英文混排参考文献中“等”与“et al”的处理
  7. 知识图谱应用实战案例100篇(一)-阿里巴巴超大规模知识图谱预训练实践:商品分类
  8. 使用Excel和TF实现Transformer!
  9. 谈一谈我对前端的学习路线及方法的一些心得
  10. python中的大数据品牌运营专业公司_国内最好的专业数据分析公司有哪些?