java后端接收前端发送的数组

java后端接收前端发送的数组有这样一个问题:

声明一个数组:

var arrays = [];
arrays.push(1);
arrays.push(2);
arrays.push(3);
arrays.push(4);

正常通过ajax给他发送到后端:

// 省略一部分
$.ajax({
	url: url,
	type: 'post',
	dataType: 'json',
	data: {
		arrays: arrays
	},
	success: function(res) {}
})

正常后端接收值是这样的:

@RequestMapping("/getArrays")
@ResponseBody
public String getArrays(HttpServletRequest request) {
	Integer[] arrays = request.getParameterValues("arrays");
	return "收到值";
}

但是:通过 Debug 或者打印的信息来看,你会发现获取到的 arrays 是空的,没有值,但是前端已经把值给放进来了呀;
这时我们通过前端的控制台的请求头看到他发送的信息:
在这里插入图片描述

// 我们会发现,jq会把这个数组拆分成了一个个,是这样的;
arrays[]: 1
arrays[]: 2
arrays[]: 3
arrays[]: 4

把我们原先设置的arrays换成了arrays[],这时,改变后端接收值的策略,也把arrays换成arrays[],如下:

@RequestMapping("/getArrays")
@ResponseBody
public String getArrays(HttpServletRequest request) {
	Integer[] arrays = request.getParameterValues("arrays[]");
	return "收到值";
}

这样,我们在通过上述方法来查看值的信息,我们就会发现,值获取到了。


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