`
what_is_javascript
  • 浏览: 56925 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring MVC Controller与jquery ajax请求处理json

阅读更多
在用 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());
}


以上希望能为遇到类似问题的朋友提供一些帮助。
分享到:
评论
5 楼 magicyang919 2013-12-13  
顶你,终于好了
4 楼 caizi12 2013-11-02  
能写成这样的吗?

public  ModelAndView order(@RequestBody List<User> orders) {  
        System.out.println("orders size:" + orders.size());  
}  
3 楼 lijunwyf41 2013-10-07  
是不是jar不够?jackson-core-asl-1.9.12.jar jackson-mapper-asl-1.9.12.jar jcl-over-slf4j-1.7.5.jar json-lib-2.3-jdk15.jar 这些都导进去了?
2 楼 dingding5060 2013-09-20  
contentType: "application/json; charset=utf-8",


/////果然能解决,感谢lz!
1 楼 zl_xtyp 2013-05-29  
很有用~
data : $toJSON(cmd), 
可以直接用 : JSON.stringify(cmd) 滴

相关推荐

    spring mvc json&&jackson jquery js

    5. **AJAX交互**:使用jQuery的`$.ajax`或`$.getJSON`发送请求,获取JSON数据,并在成功回调中处理数据,更新页面内容。 总的来说,这个项目结合了Spring MVC的强大后端处理能力,利用Jackson进行高效的JSON数据...

    spring-mvc-jquery.zip_jquery_mvc jquery_spring jquery_spring mvc

    1. **异步数据加载**:使用jQuery的$.ajax或$.getJSON函数,向Spring MVC的Controller发送请求,获取JSON格式的数据,然后动态地更新页面内容。 2. **表单验证**:在客户端使用jQuery进行表单验证,如果验证失败,...

    SSH1,JQuery的ajax返回json二维数组处理过程

    SSH1(Spring、Struts、Hibernate)是Java开发中的一个流行MVC框架组合,而jQuery的AJAX功能则提供了与服务器端进行异步交互的能力。 首先,我们需要理解JSON数据结构。在示例中,返回的JSON数据是一个二维数组,形...

    Spring3 MVC Ajax with JSON

    这个项目提供的示例工程应该包含了一个工作流程的完整实例,从Ajax请求到Spring MVC的处理,再到JSON响应的返回,帮助开发者理解并掌握这一技术栈的使用。通过深入研究和实践,你将能够熟练地在自己的项目中应用这些...

    spring与jquery ajax交互 和 servlet与jquery ajax交互

    Spring作为一个全面的Java企业级应用框架,提供了强大的MVC(Model-View-Controller)架构支持,而jQuery则简化了JavaScript的DOM操作和AJAX通信。本文将深入探讨Spring与jQuery AJAX交互以及Servlet与jQuery AJAX...

    springmvc + jquery + ajax + json 异步传递数据

    SpringMVC是Spring框架的一部分,是一个强大的MVC(Model-View-Controller)架构,用于构建企业级的Web应用。它提供了一个灵活的模型绑定,数据验证,以及异常处理机制,使得开发者可以更专注于业务逻辑,而不是底层...

    Spring3MVC和jQuery的集成

    然后,我们可以使用jQuery来发送Ajax请求到Spring3 MVC的Controller。例如,使用$.ajax()或者$.getJSON()方法,向服务器发送GET或POST请求,接收JSON数据。 在Controller端,我们需要创建一个处理Ajax请求的方法,...

    spring mvc+ajax

    在Spring MVC中集成Ajax,通常会在前端使用JavaScript库如jQuery来发送Ajax请求。例如,我们可以创建一个AJAX函数,通过`$.ajax()`或`$.getJSON()`等方法向后台发送异步请求。这些请求通常带有特定的URL和参数,对应...

    一个实用了spring mvc和ajax异步请求的例子

    总结起来,这个"一个实用了spring mvc和ajax异步请求的例子"涵盖了Web开发中的重要概念,包括Spring MVC的Controller设计、RESTful API的实现以及Ajax的异步数据交互。这样的组合使得Web应用更加动态,用户体验更佳...

    spring mvc 使用jquery 传json值给Controller时需要解决的问题

    在Spring MVC中,使用jQuery向Controller传递JSON数据是一种常见的数据交互方式。然而,这个过程可能会遇到一些问题,本文将详细探讨这些难题以及解决方案。 1. **JSON数据格式化** JSON(JavaScript Object ...

    jQuery Spring MVC

    3. **创建控制器**:编写一个处理请求的Spring MVC控制器,该控制器返回JSON数据,这些数据将被jqGrid用来填充表格。可以使用`@ResponseBody`注解和`@RequestMapping`来处理Ajax请求。 4. **编写HTML和JavaScript**...

    spring mvc+jquery easyui CRUD

    在本项目中,我们主要探讨的是如何利用Spring MVC框架与jQuery EasyUI库来实现一个基本的CRUD(创建、读取、更新、删除)功能。Spring MVC是Java平台上的一个强大的MVC(Model-View-Controller)框架,它提供了一个...

    springMVC+ajax+json

    在Spring MVC中,Controller可以返回JSON格式的数据响应Ajax请求。通过在@RequestMapping注解中指定produces="application/json",表明该方法将返回JSON数据。然后,使用@RequestBody或@ResponseBody注解将HTTP请求...

    springmvc利用jquery实现ajax的例子

    确保jQuery库已经正确引入,且Ajax请求的URL与Spring MVC中的Controller方法匹配。通过查看浏览器的开发者工具网络面板,可以跟踪Ajax请求的发送和响应情况。 5. **注意事项** - 确保Spring MVC的MVC配置正确无误...

    ajax向springmvc传递json

    总结来说,Ajax向Spring MVC传递JSON涉及的主要步骤包括前端的数据序列化、Ajax请求的发起、服务器端的参数绑定、业务处理及响应的JSON化。理解并熟练掌握这一流程对于进行高效的前后端数据交互至关重要。在实际项目...

    Spring MVC与Ajax交互源码

    例如,当用户在前端进行某些操作,如提交表单,我们可以使用Ajax发送POST请求到Spring MVC的Controller,Controller处理业务逻辑后,将结果以JSON或其他格式返回。JavaScript接收到响应后,可以在前端动态更新页面,...

    Spring + Hibernate + Spring mvc +Ajax 整合

    6. **Ajax请求**:在前端JavaScript中使用Ajax发送请求到Controller,例如使用jQuery的`$.ajax()`或`$.getJSON()`方法。 7. **响应处理**:Controller处理完请求后,可以返回JSON数据,前端使用Ajax回调函数解析并...

    spring第11章--ajax,上传下载,拦截器.rar_spring mvc_spring 下载_spring 使用ajax

    - **jQuery Ajax**:Spring MVC常与jQuery库结合使用,通过$.ajax()或$.get()、$.post()等方法发送Ajax请求。在后端,你需要创建一个处理Ajax请求的Controller方法,使用@RequestMapping注解来定义URL路径。 ```...

    jQuery ajax JSON 下拉列表框级联

    4. Spring MVC Controller接收到请求,查询数据库获取对应城市的JSON数据。 5. 将JSON数据返回给前端,jQuery解析JSON并更新城市下拉列表的选项。 6. 动态添加或更新城市下拉列表的选项,完成级联效果。 这个示例...

    spring-mvc-jsonview源代码

    总结,Spring MVC通过其灵活的架构和丰富的功能,使得处理JSON数据和AJAX请求变得简单而高效。通过深入研究“spring-mvc-jsonview”的源代码,我们可以更好地理解和利用这些特性,提升Web应用的性能和用户体验。同时...

Global site tag (gtag.js) - Google Analytics