var arr=new Array(); arr[0]='param'; arr[1]='param2'; $.ajax({url:请求地址, data:{params:arr}, type:"POST", traditional:true, //默认false success:function(){ //do something } });
通过ajax提交数组时,会自动在所设定的参数后面增加中括号:“[]”,导致后端spring MVC中的@RequestParam获取不到参数。
解决方法:
ajax请求时增加:traditional: true 就可以正常提交了。原因如下:
jQuery会调用jQuery.param序列化参数,jQuery.param( obj, traditional ),默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架,但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化。
request获取ajax数组参数
String[] sbzz=request.getParameterValues("sbzz");//专业申报资质