直接贴代码
function demo () {
var list = [1, 2, 3, 4];
$.ajax({
url: '/api/test',
type: 'get',
data: {'list': list},
traditional: true, // 这句很重要
contentType: "application/json; charset=utf-8",
dataType: 'JSON',
success: function (data){
console.log(data.value);
},
error: function (respons){
console.log(response);
}
});
}
后台 Controller 代码
@GetMapping("api/test")
public String export(Integer[] list){
return list;
}
设置 jQuery 的 traditional 参数 实际上是设置 jQuery.param 的 traditional 参数,默认为false,当设置为true后,会导致多层次的对象序列化为[object object](浅序列化)
当提交的参数是数组( {selectUsers:[value,value,value]} ) :
如果是false的话,则提交时会是"selectUsers[]=value&selectUsers[]=value"
如果设置成true,则提交时会是"selectUsers=value&selectUsers=value"
这样后台就能用String[] ids=request.getParameterValues("selectUsers"); 获取到值。
官方文档的解释如下:
traditional
类型:Boolean
如果你想要用传统的方式来序列化数据,那么就设置为 true。
参考博客: https://www.cnblogs.com/linsx/p/6801751.html