Ajax請求傳遞數組參數的方法

方法一:拼接字符串參數

var arr={params:['param','param2']};
$.ajax({url:請求地址,
            data:arr,
            type:"POST",
            success:function(){
                //do something
            }
        });

方法二:ajax提交添加」traditional:true」參數

traditional:是否使用傳統的方式淺層序列化。jquery

數組或jQuery對象會按照name/value對進行序列化,普通對象按照key/value對進行序列化。ajax

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獲取不到參數。spring

解決方法:後端

ajax請求時增長:traditional: true 就能夠正常提交了。緣由以下:api

jQuery會調用jQuery.param序列化參數,jQuery.param( obj, traditional ),默認的話,traditional爲false,即jquery會深度序列化參數對象,以適應如PHP和Ruby on Rails框架,但servelt api沒法處理,咱們能夠經過設置traditional 爲true阻止深度序列化。數組

相關文章
相關標籤/搜索