在用 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. **AJAX交互**:使用jQuery的`$.ajax`或`$.getJSON`发送请求,获取JSON数据,并在成功回调中处理数据,更新页面内容。 总的来说,这个项目结合了Spring MVC的强大后端处理能力,利用Jackson进行高效的JSON数据...
1. **异步数据加载**:使用jQuery的$.ajax或$.getJSON函数,向Spring MVC的Controller发送请求,获取JSON格式的数据,然后动态地更新页面内容。 2. **表单验证**:在客户端使用jQuery进行表单验证,如果验证失败,...
SSH1(Spring、Struts、Hibernate)是Java开发中的一个流行MVC框架组合,而jQuery的AJAX功能则提供了与服务器端进行异步交互的能力。 首先,我们需要理解JSON数据结构。在示例中,返回的JSON数据是一个二维数组,形...
这个项目提供的示例工程应该包含了一个工作流程的完整实例,从Ajax请求到Spring MVC的处理,再到JSON响应的返回,帮助开发者理解并掌握这一技术栈的使用。通过深入研究和实践,你将能够熟练地在自己的项目中应用这些...
Spring作为一个全面的Java企业级应用框架,提供了强大的MVC(Model-View-Controller)架构支持,而jQuery则简化了JavaScript的DOM操作和AJAX通信。本文将深入探讨Spring与jQuery AJAX交互以及Servlet与jQuery AJAX...
SpringMVC是Spring框架的一部分,是一个强大的MVC(Model-View-Controller)架构,用于构建企业级的Web应用。它提供了一个灵活的模型绑定,数据验证,以及异常处理机制,使得开发者可以更专注于业务逻辑,而不是底层...
然后,我们可以使用jQuery来发送Ajax请求到Spring3 MVC的Controller。例如,使用$.ajax()或者$.getJSON()方法,向服务器发送GET或POST请求,接收JSON数据。 在Controller端,我们需要创建一个处理Ajax请求的方法,...
在Spring MVC中集成Ajax,通常会在前端使用JavaScript库如jQuery来发送Ajax请求。例如,我们可以创建一个AJAX函数,通过`$.ajax()`或`$.getJSON()`等方法向后台发送异步请求。这些请求通常带有特定的URL和参数,对应...
总结起来,这个"一个实用了spring mvc和ajax异步请求的例子"涵盖了Web开发中的重要概念,包括Spring MVC的Controller设计、RESTful API的实现以及Ajax的异步数据交互。这样的组合使得Web应用更加动态,用户体验更佳...
在Spring MVC中,使用jQuery向Controller传递JSON数据是一种常见的数据交互方式。然而,这个过程可能会遇到一些问题,本文将详细探讨这些难题以及解决方案。 1. **JSON数据格式化** JSON(JavaScript Object ...
3. **创建控制器**:编写一个处理请求的Spring MVC控制器,该控制器返回JSON数据,这些数据将被jqGrid用来填充表格。可以使用`@ResponseBody`注解和`@RequestMapping`来处理Ajax请求。 4. **编写HTML和JavaScript**...
在本项目中,我们主要探讨的是如何利用Spring MVC框架与jQuery EasyUI库来实现一个基本的CRUD(创建、读取、更新、删除)功能。Spring MVC是Java平台上的一个强大的MVC(Model-View-Controller)框架,它提供了一个...
在Spring MVC中,Controller可以返回JSON格式的数据响应Ajax请求。通过在@RequestMapping注解中指定produces="application/json",表明该方法将返回JSON数据。然后,使用@RequestBody或@ResponseBody注解将HTTP请求...
确保jQuery库已经正确引入,且Ajax请求的URL与Spring MVC中的Controller方法匹配。通过查看浏览器的开发者工具网络面板,可以跟踪Ajax请求的发送和响应情况。 5. **注意事项** - 确保Spring MVC的MVC配置正确无误...
总结来说,Ajax向Spring MVC传递JSON涉及的主要步骤包括前端的数据序列化、Ajax请求的发起、服务器端的参数绑定、业务处理及响应的JSON化。理解并熟练掌握这一流程对于进行高效的前后端数据交互至关重要。在实际项目...
例如,当用户在前端进行某些操作,如提交表单,我们可以使用Ajax发送POST请求到Spring MVC的Controller,Controller处理业务逻辑后,将结果以JSON或其他格式返回。JavaScript接收到响应后,可以在前端动态更新页面,...
6. **Ajax请求**:在前端JavaScript中使用Ajax发送请求到Controller,例如使用jQuery的`$.ajax()`或`$.getJSON()`方法。 7. **响应处理**:Controller处理完请求后,可以返回JSON数据,前端使用Ajax回调函数解析并...
- **jQuery Ajax**:Spring MVC常与jQuery库结合使用,通过$.ajax()或$.get()、$.post()等方法发送Ajax请求。在后端,你需要创建一个处理Ajax请求的Controller方法,使用@RequestMapping注解来定义URL路径。 ```...
4. Spring MVC Controller接收到请求,查询数据库获取对应城市的JSON数据。 5. 将JSON数据返回给前端,jQuery解析JSON并更新城市下拉列表的选项。 6. 动态添加或更新城市下拉列表的选项,完成级联效果。 这个示例...
总结,Spring MVC通过其灵活的架构和丰富的功能,使得处理JSON数据和AJAX请求变得简单而高效。通过深入研究“spring-mvc-jsonview”的源代码,我们可以更好地理解和利用这些特性,提升Web应用的性能和用户体验。同时...