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


方法一:拼接字符串參數

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阻止深度序列化。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM