jQuery.param(obj,[traditional])

最后更新于:2022-04-01 05:59:11

### 返回值:StringjQuery.param(obj,*[traditional]*) ### 概述 将表单元素数组或者对象序列化。是.serialize()的核心方法。 在jQuery 1.3中,如果传递的参数是一个函数,那么用.param()会得到这个函数的返回值,而不是把这个函数作为一个字符串来返回。 在jQuery 1.4中,.param()会深度递归一个对象来满足现在脚本语言和框架,比如PHP, Ruby on Rails等。你可以通过jQuery.ajaxSettings.traditional = true; 来全局得禁用这个功能。 注意:因为有些框架在解析序列化数字的时候能力有限,所以当传递一些含有嵌套对象、数组的对象作为参数时,请务必小心! 在jQuery 1.4中,HTML5的input元素也会被序列化。 ### 参数 #### **obj**Array<Elements>/jQuery/Object*V1.2* 数组或jQuery对象会按照name/value对进行序列化,普通对象按照key/value对进行序列化。 #### **obj,[traditional]**Array<Elements>/jQuery/Object,Boolean*V1.4* **obj**:数组或jQuery对象会按照name/value对进行序列化,普通对象按照key/value对进行序列化。 **traditional**:是否使用传统的方式浅层序列化。 ### 示例 #### 描述: 按照key/value对序列化普通对象。 ##### jQuery 代码: ~~~ var params = { width:1680, height:1050 }; var str = jQuery.param(params); $("#results").text(str); ~~~ ##### 结果: ~~~ width=1680&height=1050 ~~~ #### 描述: 对比两种序列化方式 ##### jQuery 代码: ~~~ var myObject = { a: { one: 1, two: 2, three: 3 }, b: [1,2,3] }; var recursiveEncoded = $.param(myObject); var recursiveDecoded = decodeURIComponent($.param(myObject)); alert(recursiveEncoded); alert(recursiveDecoded); //a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3 //a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3 var shallowEncoded = $.param(myObject, true); var shallowDecoded = decodeURIComponent(shallowEncoded); alert(shallowEncoded); alert(shallowDecoded); //a=%5Bobject+Object%5D&b=1&b=2&b=3 //a=[object+Object]&b=1&b=2&b=3 ~~~
';