前端传数组给后台

很多次遇到需要传数组到后台的情况,以前都是用“,”分隔组合成字符串传给后台,然后后台再拆分。这样做可以解决,但是很麻烦,要做几次判断,并且还要考虑传的数据里面有“,”的情况。于是上网搜索了一下,总结有两种方法(以前也搜索过,但是一直都没结果,不知道是不是姿势不对,今天既然有结果了,何不做个记录[微笑]

方法一:使用JSON.stringify 将数组对象转化成json字符串

这种方法是在前端的时候就把数组使用JSON.stringify的方式转换成后台认识的样子,后台就可以直接接收了:
js代码:(这里使用json的提交方式)

var ids = ['1','2'];
$.ajax({
	type : 'POST',
	url: 'course/delete',
	contentType : "application/json" ,
	data: JSON.stringify(ids),
	success : function(data) {
	}
});

传输的数据是这样的:
在这里插入图片描述
后台处理:

@RequestMapping(value = "/delete", method = {RequestMethod.POST})
@ResponseBody
public void delete(@RequestBody String[] id) {
	for (String string : id) {
        System.out.println(string);
    }
}

方法二:前端不作处理,在后台处理

js代码:(这里使用form的提交方式)

var array = ["1", "2"];
$.ajax({  
    type : 'POST',  
    url: 'course/delete',
    contentType: "application/x-www-form-urlencoded",
    data: {"array": array},
    success : function(data) {  
    }  
}); 

传输的数据是这样的:
在这里插入图片描述
后台处理:

@RequestMapping(value = "/delete", method = {RequestMethod.POST})
public void delete(HttpServletRequest req) {
    String[] array = req.getParameterValues("array[]");
    for (String string : array) {
        System.out.println(string);
    }
}

再次注意:两种post请求的content-type不同!

参考博文:原文


版权声明:本文为weixin_44436524原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。