数据格式 .ajax 参数传递 friends plain ++ 类型 报错
通过 ajax 传递参数给 springmvc,经常会因为 参数类型太复杂,或者根本不知道 springmvc 都支持哪些类型转换,导致后台接收出现各种问题。如果书写格式没有问题仍然接受参数报错,大部分是因为 springmvc 默认无法支持该种格式的 json 转换导致的
现在一句话解决,就是 [email protected]
下面看一些传参的例子,基本涵盖了大部分的参数传递类型
ajax
- $("#test1").on("click",
- function() {
- var idList = new Array();
- idList.push("1");
- idList.push("2");
- idList.push("3");
- $.post("/mvc/client1/test1", {
- idList: idList
- })
- });
java
- /**
- * 简单类型list
- * explain:包含string int date 等属性
- */
- @RequestMapping("/test1")
- @ResponseBody
- public voidtest1(@RequestParam("idList[]") List idList){
- for(Integer i: idList){
- System.out.println(i);
- }
- }
- 案例1中要注意,当你ajax传递一个很简单的数组,本以为后台能够接受到,却总是报错,很可能的原因是:http请求传递数组的时候,为了区别是一个数组,会在数组名称后面加上中括号"[]",[email protected],你要的idList实际上是idList[]就可以了
ajax
- $("#test2").on("click",
- function() {
- var id = 1;
- var username = "fangxin";
- $.post("/mvc/client1/test2", {
- id: id,
- username: username,
- birthday: new Date()
- })
- });
java
- @RequestMapping("/test2")
- @ResponseBody
- public void test2(User user){
- System.out.println(user.getId());
- System.out.println(user.getUsername());
- System.out.println(user.getBirthday());
- }
这就是最常见的传递参数,如果一个对象的属性都是简单类型,那基本没什么问题
ajax
- $("#test3").on("click",
- function() {
- var user = {
- id: 1,
- username: "fangxin",
- birthday: new Date(),
- luckyNums: [1, 2, 3],
- friends: [{
- name: "zhangsan"
- },
- {
- name: "lisi"
- }]
- };
- $.ajax({
- type: "POST",
- url: "/mvc/client1/test3",
- data: JSON.stringify(user),
- contentType: "application/json"
- })
- });
java
- /**
- * 复杂对象
- * explain:包含简单list属性、对象list属性
- */
- @RequestMapping("/test3")
- @ResponseBody
- public void test3(@RequestBody User user){
- System.out.println(user.getId());
- System.out.println(user.getUsername());
- System.out.println(user.getBirthday());
- for(Integer i:user.getLuckyNums()){
- System.out.println(i);
- }
- for(Person p:user.getFriends()){
- System.out.println(p.getName());
- }
- }
案例 3 中的 User 的属性相当复杂,有简单数组,还有包含对象的复杂 List,这样的 user 如果用案例 2 的方式接受,肯定就挂了。此时,最好是前台 stringify 转换成 json 字符串,[email protected]�
ajax
- $("#test5").on("click",
- function() {
- var users = [];
- for (var i = 0; i < 10; i++) {
- var user = {
- id: 1,
- username: "fangxin",
- birthday: new Date(),
- luckyNums: [1, 2, 3],
- friends: [{
- name: "zhangsan"
- },
- {
- name: "lisi"
- }]
- };
- users.push(user);
- }
- $.ajax({
- type: "POST",
- url: "/mvc/client1/test5/",
- data: JSON.stringify(users),
- contentType: "application/json"
- })
- });
java
- /**
- * 复杂List
- */
- @RequestMapping("/test5")
- @ResponseBody
- public voidtest5(@RequestBody List users){
- for(User user:users){
- System.out.println(user.getUsername());
- }
- }
用案例 3 的方式,依然可以接收到,屡试不爽。
同理
ajax 传递参数给 springmvc 总结 [转]
来源: http://www.bubuko.com/infodetail-2042055.html