前端传数组给后台

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

方法一:使用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) {
     
	}
});

传输的数据是这样的:
前端传数组给后台_第1张图片
后台处理:

@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不同!

参考博文:原文

你可能感兴趣的:(java,js,前端,后台,数组)