在使用ajax向后台传值的时候,有的时候一个字段需要传多个值,需要使用到数组
var params = [1,2,3]
$.ajax({
async:false,
dataType:"json",
traditional :true, //阻止深度序列化
type:"POST",
data:{
"ids":params //"ids"对应后台参数名
},
url:"/xxx/xxx",
success:function(res){
//TO DO...
}
});
默认情况下,ajax的参数traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架,但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化。例子:
当需要传的参数是数组 {params:[p1,p2,p3]} 时,
如果将traditional设置成true,则提交时会是"params=p1¶ms=p2¶ms=p3"
如果是false的话,则提交时会是"params[]=p1¶ms[]=p2value2¶ms[]=p3"
在java spring后台就可以拿到数组并操作了。
/**
* 批量操作
* @param ids
* @return
*/
@PostMapping("operation")
public Result operation(@RequestParam String[] ids){
for(String id:ids){
System.out.print(id);
}
}