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源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
jquery+css实现侧边导航栏效果
Jun 12 jQuery
jQuery常用选择器详解
Jul 17 jQuery
简单实现jQuery手风琴效果
Aug 18 jQuery
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
JQuery的加载和选择器用法简单示例
May 13 jQuery
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
基于ajax及jQuery实现局部刷新过程解析
Sep 12 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
做个自己站内搜索引擎
2006/10/09 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php生成zip文件类实例
2015/04/07 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
jQuery 解析xml文件
2009/08/09 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
实习期自我鉴定
2013/10/11 职场文书
英语教师岗位职责
2014/03/16 职场文书
2016高考感言
2015/08/01 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL
MySQL分布式恢复进阶
2022/07/23 MySQL