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 UI Grid 模态框中的表格实例代码
Apr 01 jQuery
jquery.form.js异步提交表单详解
Apr 25 jQuery
jQuery使用正则验证15/18身份证的方法示例
Apr 27 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 jQuery
jQuery实现的中英文切换功能示例
Jan 11 jQuery
JQueryDOM之样式操作
Mar 27 jQuery
Vue项目中使用jquery的简单方法
May 16 jQuery
通过jQuery学习js类型判断的技巧
May 27 jQuery
Javascript和jquery在selenium的使用过程
Oct 31 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/07/13 国漫
PHP+MYSQL中文乱码问题
2015/07/01 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
Python for循环中的陷阱详解
2018/07/13 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
使用Python实现批量ping操作方法
2020/05/06 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
学生党员思想汇报
2013/12/28 职场文书
中学生校园广播稿
2014/01/16 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android