一般情况下我们使用ajax向后台传送数据默认格式是:
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
传输为key-value格式,例如: name:"zhangsan"
但是传送的都是String的值,因此如果要传送:name:["zhangsan","lisi"]
,这样的数据,传送到后台就把这个数组序列化,
所以,需要防止序列化组数的方式,可以使用: traditional: true
,加入traditional后,就能够防止深度序列化。
以下,是我截取一部分代码的例子:
前端传递:
/*前端传递*/
const pidArr = ["PPL000005", "PPL000007", "P789"];
$.ajax({
method: "POST",
cache: "false",
dataType: "JSON",
traditional: true, //加入traditional防止深度序列化
url: "http://localhost:8080/xxxx/deletePersons",
data: {
pidArr: pidArr,
},
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
success: function (data) {
},
error: function () {
},
});
后端接收:
/*后端接收*/
public void deletePersons(@RequestParam(value="pidArr") String[] pidArr,HttpServletRequest request, HttpServletResponse response) {}
String[] pidArr2 = pidArr;
}
或者
public void deletePersons(HttpServletRequest request, HttpServletResponse response) {
String[] pidArr = request.getParameterValues("pidArr");
}
终上、我们就可以使用ajax的data中向后台传递数组数据了。