jQuery ajax - param() 方法

实例

序列化一个 key/value 对象:

var params = { width:1900, height:1200 };
var str = jQuery.param(params);
$("#results").text(str);

结果:

width=1680&height=1050

TIY 实例

输出序列化对象的结果:

$("button").click(function(){
$("div").text($.param(personObj));
});

亲自试一试

定义和用法

param() 方法创建数组或对象的序列化表示。

该序列化值可在进行 AJAX 请求时在 URL 查询字符串中使用。

语法

jQuery.param(object,traditional)
参数 描述
object 要进行序列化的数组或对象。
traditional 规定是否使用传统的方式浅层进行序列化(参数序列化)。

详细说明

param() 方法用于在内部将元素值转换为序列化的字符串表示。请参阅 .serialize() 了解更多信息。

对于 jQuery 1.3,如果传递的参数是一个函数,那么用 .param() 会得到这个函数的返回值,而不是把这个函数作为一个字符串来返回。

对于 jQuery 1.4,.param() 方法将会通过深度递归的方式序列化对象,以便符合现代化脚本语言的需求,比如 PHP、Ruby on Rails 等。你可以通过设置 jQuery.ajaxSettings.traditional = true; 来全局地禁用这个功能。

如果被传递的对象在数组中,则必须是以 .serializeArray() 的返回值为格式的对象数组:

[{name:"first",value:"Rick"},
{name:"last",value:"Astley"},
{name:"job",value:"Rock Star"}]

注意:因为有些框架在解析序列化数字的时候能力有限,所以当传递一些含有对象或嵌套数组的数组作为参数时,请务必小心!

在 jQuery 1.4 中,HTML5 的 input 元素也会被序列化。

更多实例

我们可以如下显示对象的查询字符串表示以及 URI 编码版本:

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);

recursiveEncoded 和 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

可以将 traditional 参数设置为 true,来模拟 jQuery 1.4 之前版本中 $.param() 的行为:

var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var shallowEncoded = $.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded); alert(shallowEncoded);
alert(shallowDecoded);

recursiveEncoded 和 recursiveDecoded 的值输出如下:

a=%5Bobject+Object%5D&b=1&b=2&b=3
a=[object+Object]&b=1&b=2&b=3

最新文章

  1. SharePoint 2013管理中心里【管理服务器上的服务】不见了
  2. Git 冲突合并
  3. A star 寻路
  4. 调用discuz编辑器发布帖子显示html代码的解决办法
  5. 第九十九天上课 PHP TP框架 数据库查询和增加
  6. JavaScript空判断
  7. cocos2dx A*算法
  8. 跟我学习dubbo-简介(1)
  9. libvirt python binding 变成了一个新项目了。
  10. Android组件系列----ContentProvider内容提供商【5】
  11. [leetcode-617-Merge Two Binary Trees]
  12. 网页静态化技术--Freemarker入门
  13. flask 渲染jinja2模版和传参
  14. CentOS 7 无法yum安装解决方法
  15. Ubuntu16.04下通过tar.gz包安装MySQL5.5.52
  16. ubuntu系列-安装jdk以及eclipse(for C++)
  17. 【BootStrap】Table的基本使用
  18. HDUOJ---The Moving Points
  19. atcoder之A Great Alchemist
  20. 使用Unity解耦你的系统—PART3——依赖注入

热门文章

  1. POJ 1486 Sorting Slides(二分图匹配)
  2. Awesome图标 | 如何在某些编辑软件中使用Font Awesome字体图标
  3. linux-更改文件属性-chattr与lsattr
  4. sql-server-on-linux-how-i-think-they-did-it : Anthony Nocentino's Blog
  5. iOS 常用的#define合集
  6. druid 配置监控界面和开启spring支持
  7. shell产生随机数七种方法
  8. spring注入之使用标签 @Autowired @Qualifier
  9. hadoop2.2.0伪分布式安装
  10. JavaScript 数字与字符串 比较大小