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) map.get("a");
- List<Integer> b = (List<Integer>) map.get("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 = jsonArray.getJSONObject(i);
- TestPOJO testPOJO=JSONObject.toJavaObject(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",
- 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。
SpringMVC,SpringBoot使用ajax传递对象集合/数组到后台的更多相关文章
- ajax传对象或者数组到后端
ajax是无法直接传送对象或者数组,有些人自己处理的话,能够把数据依照自己的标准连接成一个字符串,然后到后端处理.可是数据的不确定性.导致有可能会出错.并且麻烦 事实上有开源的包,能够直接解释成jso ...
- ajax传递list集合
原文链接:https://blog.csdn.net/qq_37936542/article/details/79277495 一:ajax传递List<String>类型的数据 js代码 ...
- jquery ajax传递多个对象或数组到后台
1.js对象创建:因为需要把对象json序列化后,才能传递到后台,后台根据json字符串进行反序列化. 2.Jquery $.ajax方法的配置 针对$.ajax方法的配置参数需要进行修改: 1) ...
- springMVC中使用ajax传递json数组
解决方法 去www.json.org下载JSON2.js 再调用JSON.stringify(JSONData)将JSON对象转化为JSON串. var people = [{ "UserN ...
- ajax传递对象数组
1.Json.stringify()是将json数据格式转换成String类型字符串的方法. 后台可以使用String类型接受,接收完可以使用json转换java集合的方法. List<实体类& ...
- 一个实例 ---灵活使用jquery选择器实现input一个key,多个value 。 用ajax传递对象到后台控制器
标题可能不是很清晰,我们看实例: 简单来说就是需要实现sku的功能...一件商品可以有多个属性, 一个属性可以有多个值 . 最后以json格式存到数据库 难点一: 如何实现input输入框的弹性使用 ...
- SpringBoot RequestBody ajax提交对象
前端实现: var student = { "name":1, "age":2, "score":3 }; $.ajax({ url:&qu ...
- ajax传递对象到MVC控制器
1.view层中ajax写法: function Add2() { var model = new Object(); model.UserName = $('#UserName').val(); m ...
- asp.net ajax传递Json给aspx.cs后台 webmethod方法传递json
1.提取一个向后台写入数据的方法 ///向后台cs页面请求数据的方法 function myPost(url,data,func) { $.ajax({ type: "post", ...
随机推荐
- querySelector与getElementBy的区别
1,querySelector() 方法返回匹配指定 CSS 选择器元素的第一个子元素 . 该方法只返回匹配指定选择器的第一个元素.如果要返回所有匹配元素,需要使用 querySelectorAll( ...
- tcpdump我的交叉编译(mips)
一.libpcap交叉编译 1.下载libpcap-1.8.1(http://www.tcpdump.org/) 2.解压 3.修改configure文件 a.注释掉 #if test -z &quo ...
- linux和shell的学习记录
1.16条常用的命令 .文件的权限修改:(把文件1.txt的归属改为mysql的,然后ll查看) chown mysql:mysql .txt .增加当前用户的x权限,然后ll查看: chomd u+ ...
- zipkin链路追踪
zipkin架构说明 zipkin api 我想自己搞一些满足zipkin格式的日志,入库es,然后让zipkin仅做展示 1.需要了解zipkin组件 2,学习zipkin设计原理,何时何地产生日志 ...
- minikube windows hyperx填坑记
minikube windows hyperx填坑记 安装了一天半,还是没行,先放弃 开始 minikube start --vm-driver=hyperv --hyperv-virtual-swi ...
- tp5命令行
手册->命令行->自定义命令行 1.第一步,配置command.php文件 2.第二步,建立命令类文件 注意:该文件中代码,从文档中粘,以防写错. 名字啥的都不用改,就改命名空间 和 定义 ...
- MATLAB绘制函数图
序言 Matlab可以根据用户给出的数据绘制相应的函数图.对于单个2D函数图,需要给出一个行向量x作为函数图上离散点集的横坐标,以及一个与x列数一样的横坐标y作为函数图上点集的纵坐标. 向量x和y的取 ...
- Cocos Creator JS 时间戳日期转换
/*** 时间戳换算日期* */function formatDateTime (timeStamp) { var date = new Date(); date.setTime(timeStamp ...
- 006-CSS引入外部字体
我们制作页面css,设置字体,可能会需要加入一些比较特殊的字体,这时候就需要引入这些字体. 方法如下: @font-face { font-family: KuTang;/*定义字体的名字*/ src ...
- [macOS] finder变慢提速
原文地址:http://ntfs-formac.com/fix-slow-finder-macos-sierra/ 我采取的是第二种方法,够简单,直接在终端执行 rm ~/Library/Caches ...