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将标签元素的高设为屏幕的百分比
Apr 19 jQuery
jquery中each循环的简单回滚操作
May 05 jQuery
Jquery把获取到的input值转换成json
May 15 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
jQuery查找和过滤_动力节点节点Java学院整理
Jul 04 jQuery
jquery对table做排序操作的实例演示
Aug 10 jQuery
jQuery实现广告条滚动效果
Aug 22 jQuery
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
Jun 14 jQuery
jquery实现直播弹幕效果
Nov 28 jQuery
jQuery实现简易聊天框
Feb 08 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
大师制作的中短波矿石收音机
2020/04/02 无线电
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
PHP合并静态文件详解
2014/11/14 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python读取文件名称生成list的方法
2018/04/27 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
python中实现字符串翻转的方法
2018/07/11 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
金融专业个人求职信
2013/09/22 职场文书
《三峡》教学反思
2014/03/01 职场文书
元宵晚会主持词
2014/03/25 职场文书
什么是就业协议书
2014/04/17 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
庆六一开幕词
2015/01/29 职场文书
幼儿园小班班务总结
2015/08/03 职场文书