jquery.param()实现数组或对象的序列化方法


Posted in jQuery onOctober 08, 2018

jQuery.param( obj ):

创建适用于URL查询字符串或Ajax请求的数组,普通对象或jQuery对象的序列化表示形式。 如果jQuery对象被传递,它应该包含具有name / value属性的输入元素。

jQuery.param( obj ):
 
obj:
 
类型:Array或PlainObject或jQuery
 一个数组,一个普通的对象,或一个jQuery对象进行序列化。
 jQuery.param( obj, traditional ):
 
obj:
 
类型:Array或PlainObject或jQuery
 一个数组,一个普通的对象,或一个jQuery对象进行序列化。
 
traditional :

 类型:布尔值
 一个布尔值,表示是否执行传统的“浅”序列化。

内部使用此函数将表单元素值转换为序列化字符串表示形式(有关更多信息,请参阅.serialize())。

从jQuery 1.3开始,使用函数的返回值代替函数作为String。

从jQuery 1.4开始,$ .param()方法递归序列化深层对象,以适应现代脚本语言和框架,如PHP和Ruby on Rails。

您可以通过设置jQuery.ajaxSettings.traditional = true来全局禁用此功能。从jQuery 3.0开始,$ .param()方法不再使用jQuery.ajaxSettings.traditional作为其默认设置,默认为false。

为了跨版本的最佳兼容性,请调用$ .param()和第二个参数的显式值,并且不要使用默认值。如果传递的对象在数组中,则它必须是由.serializeArray()返回的格式的对象数组。

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

注意:由于某些框架解析序列化数组的能力有限,因此开发人员在传递包含嵌套在另一个数组中的对象或数组的obj参数时应谨慎。

注意:由于没有普遍约定的param字符串规范,所以不可能以支持此类输入的所有语言的理想方式对使用此方法的复杂数据结构进行编码。 使用JSON格式替代编码复杂数据。

在jQuery 1.4中,HTML5输入元素也被序列化。我们可以显示一个对象的查询字符串表示形式和一个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 );

shallowEncoded和shallowDecoded的值弹出如下:

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

举例:

序列化一个键/值对象。

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>jQuery.param demo</title>
 <style>
 div {
 color: red;
 }
 </style>
 <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div id="results"></div>
 
<script>
var params = { width:1680, height:1050 };
var str = jQuery.param( params );
$( "#results" ).text( str );
</script>
 
</body>
</html>

演示:

序列化一些复杂的对象

// <=1.3.2:
$.param({ a: [ 2, 3, 4 ] }); // "a=2&a=3&a=4"
// >=1.4:
$.param({ a: [ 2, 3, 4 ] }); // "a[]=2&a[]=3&a[]=4"
 
// <=1.3.2:
$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });
// "a=[object+Object]&d=3&d=4&d=[object+Object]"
 
// >=1.4:
$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });
// "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"

以上这篇jquery.param()实现数组或对象的序列化方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery操作css样式
May 15 jQuery
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
jQuery 表单序列化实例代码
Jun 11 jQuery
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
jQuery dateRangePicker插件使用方法详解
Jul 28 jQuery
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
jQuery的Ajax接收java返回数据方法
Aug 11 jQuery
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
jQuery实现点击图标div循环放大缩小功能
Sep 30 #jQuery
学习jQuery中的noConflict()用法
Sep 28 #jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 #jQuery
jQuery pjax 应用简单示例
Sep 20 #jQuery
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 #jQuery
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 #jQuery
jQuery使用each遍历循环的方法
Sep 19 #jQuery
You might like
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
php简单判断文本编码的方法
2015/07/30 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
php加密解密字符串示例
2016/10/13 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
初步探究Python程序的执行原理
2015/04/11 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python使用matplotlib画饼状图
2018/09/25 Python
Python实现井字棋小游戏
2020/03/09 Python
Solaris操作系统的线程机制
2012/12/23 面试题
行政上诉状范文
2015/05/23 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
公司业务员管理制度
2015/08/05 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
Python利器openpyxl之操作excel表格
2021/04/17 Python
Python编程编写完善的命令行工具
2021/09/15 Python