Spring MVC Controller与jquery ajax请求处理json
来源:互联网 发布:centos 7.0 64位下载 编辑:程序博客网 时间:2024/05/09 20:43
在用 spring mvc 写应用的时候发现jquery传递的【json数组对象】参数后台接收不到,多订单的处理,ajax请求:
开始如何传后台用 @RequestParam 去接收如何都接不到,分析下请求头,原来是json格式没转换
通过观察,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数组后台用这种方法来接
检查下参数写法,应该没错,测试之后还是有问题 报了这样一个错误:
POST http://localhost/test/order 415 (Unsupported Media Type) 这个问题应该是前台请求过程中没有指明contentType,ajax中加上contentType: "application/json; charset=utf-8",再测试,果然可以了。完整代码如下:
ajax:
Controller method:
- 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 String orders) {
- System.out.println("orders size:" + orders.size());
- }
0 0
- Spring MVC Controller与jquery ajax请求处理json
- Spring MVC Controller与jquery ajax请求处理json
- spring mvc json ajax jquery
- Spring mvc 处理ajax请求
- ajax和普通请求使用spring mvc在controller中的异常统一处理
- spring mvc ajax 请求返回json数据
- spring mvc 与 jquery ajax
- spring mvc 与 jquery ajax
- spring mvc 与 jquery ajax
- spring mvc + ajax,请求发送不到controller层
- ajax请求spring mvc controller,返回中文字符串显示乱码
- Spring JQuery/Ajax 进行 Json请求
- Spring MVC学习----------处理Ajax请求
- jquery ajax spring mvc controller 传值方法
- Spring mvc Controller 处理安卓post和get请求
- Spring MVC Controller中返回json数据中文乱码处理
- Spring MVC Controller中返回json数据中文乱码处理
- Spring MVC Controller中返回json数据中文乱码处理
- 赵伯平--警惕台湾的企业管理垃圾!
- Android数字签名解析(三)
- Downloadmanager
- STM32片上Flash内存映射、页面大小、寄存器映射
- 解开人人网登录密码的 RSA 加密--转载
- Spring MVC Controller与jquery ajax请求处理json
- DDD领域驱动设计基本理论知识总结
- eclipse里打开图片文件乱码解决方案
- 【java】接口的作用|实例讲解java接口
- 毕业两年来的感受
- IOS框架概览
- 深度分析:Android中Mms设置页面更改短信中心号码流程
- amcap sample code 分析初步 --学习通用filter graph的构建技术
- jQuery源码解析之jQuery.extend(),jQuery.fn.extend()