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

相关文章
相关标签/搜索