SpringMVC,SpringBoot使⽤ajax传递对象集合数组到后台假设有⼀个bean名叫TestPOJO。
1、使⽤ajax从前台传递⼀个对象数组/集合到后台。
前台ajax写法:
var testPOJO=new Array();
//这⾥组装testPOJO数组
$.ajax({
url:“testController/testPOJOs”,
data:JSON.stringify(testPOJO),
type:"post",
dataType:"json",
contentType:"application/json",
success:function (res) {
},
error:function(msg){
}
});
后台接收⽅法:
@RestController
@RequestMapping("testController")
public class testController {
  @RequestMapping("/testPOJOs")
  //如果类的注解是@Controller,那么⽅法上⾯还需要加@ResponseBody,因为@ResTController=@Controller+@ResponseBody
  public String testPOJOs (@RequestBody TestPOJO [] testPOJO) {
//操作
  }
  //或者下⾯这个
  //@RequestMapping("/testPOJOs")
  //public String testPOJOs (@RequestBody List<TestPOJO> testPOJO) {
//操作
  //}
}
⽆论是⼏维数组,前后台保持⼀致就⾏了。
2、传递Map
前台ajax写法:
var testMap={
"a":"aaa",
"b":[1,2,3]
};
$.ajax({
url:“testController/testMap”,
data:JSON.stringify(testMap),
type:"post",
dataType:"json",
contentType:"application/json",
success:function (res) {
},
error:function(msg){
}
});
后台接收⽅法:
@RestController
@RequestMapping("testController")
public class testController {
  @RequestMapping("/testMap")
  public String testMap (@RequestBody Map<String,Object> map) {
String a = (String) ("a");
List<Integer> b = (List<Integer>) ("b");
...
  }
}
3、除了传递对象集合,还需要传递其他字段。
前台ajax写法:
var testPOJO=new Array();
//这⾥组装testPOJO数组
$.ajax({
url:“testController/testPOJOs”,
data:{
“strs”: JSON.stringify(testPOJO),
“others”,”…”
  },
type:"post",
dataType:"json",
success:function (res) {
},
error:function(msg){
}
});
后台接收⽅法:
@RestController
@RequestMapping("testController ")
public class testController {
  @RequestMapping("/testPOJOs")
  public String testPOJOs (String strs,String others) {
//操作使⽤fastjson进⾏字符串对象转换
    List<TestPOJO> list=new ArrayList<>();
JSONObject json =new JSONObject();
JSONArray jsonArray= JSONArray.parseArray(strs);
for(int i=0;i<jsonArray.size();i++){
  JSONObject jsonResult = JSONObject(i);
  TestPOJO JavaObject(jsonResult,TestPOJO.class);
list.add(testPOJO);
}
//其他操作
  }
} 
或者直接把others和testPOJO数组重新组合⼀个新数组var arr=[testPOJO,”others的内容”],“strs”: JSON.stringify(arr),只传递⼀个strs字段就可以,然后后台转换。
4、传递⼀个数组
前台ajax写法:
$.ajax({
url: 'testController/listByxxx',
data: {
"xxxs":xs//xs是⼀个数组
},
type: "post",
dataType: "json",
fastjson字符串转数组success: function (res) {}
});
后台接收⽅法:
@RestController
@RequestMapping("testController")
public class testController {
@RequestMapping("/listByxxx")
public String listByxxx(@RequestParam(value = "xxxs[]")String[] xxxs){
//操作
}
}
@RequestBody⼀般⽤来处理⾮Content-Type: application/x-www-form-urlencoded编码格式的数据。在GET请求中,不能使⽤
@RequestBody。在POST请求,可以使⽤@RequestBody和@RequestParam。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。