## 返回值: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