方法一:拼接字符串參數
var arr={params:['param','param2']}; $.ajax({url:請求地址, data:arr, type:"POST", success:function(){ //do something } });
方法二:ajax提交添加”traditional:true”參數
traditional:是否使用傳統的方式淺層序列化。
數組或jQuery對象會按照name/value對進行序列化,普通對象按照key/value對進行序列化。
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阻止深度序列化。