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 "收到值";
}
这样,我们在通过上述方法来查看值的信息,我们就会发现,值获取到了。