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

 更新时间:2018年10月08日 09:49:46   作者:骑着代码去流浪  
今天小编就为大家分享一篇jquery.param()实现数组或对象的序列化方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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中unwrap()方法用法实例

    jQuery中unwrap()方法用法实例

    这篇文章主要介绍了jQuery中unwrap()方法用法,实例分析了unwrap()方法的定义、功能及移除匹配元素父元素的使用技巧,需要的朋友可以参考下
    2015-01-01
  • 调用HttpHanlder的几种返回方式小结

    调用HttpHanlder的几种返回方式小结

    本篇文章主要是对调用HttpHanlder的几种返回方式进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • Jquery使用val方法读写value值

    Jquery使用val方法读写value值

    这篇文章主要介绍了Jquery使用val方法读写value值,实例分析了jQuery中val方法获取value值与赋值操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 非常漂亮的相册集 使用jquery制作相册集

    非常漂亮的相册集 使用jquery制作相册集

    这篇文章主要为大家详细介绍了使用jquery制作非常漂亮的相册集,步骤详细,细节介绍完整,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例

    jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例

    这篇文章主要介绍了jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果,涉及jquery鼠标事件及页面元素动态样式设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • jQuery 表单验证扩展代码(二)

    jQuery 表单验证扩展代码(二)

    前些天写了一篇文章 jQuery 表单验证扩展(一) ,这是jQuery表单验证扩展的一个雏形,里面有了一些基本的功能!昨晚再次努力了一下,对表单中是否必填项验证这个部分做了一些修改的扩充!
    2010-10-10
  • jquery 页面全选框实践代码

    jquery 页面全选框实践代码

    页面中经常遇到与全选相关的操作,利用jquery集成了一下,主要为了方便使用吧~
    2010-04-04
  • 全面解析标签页的切换方式

    全面解析标签页的切换方式

    这篇文章主要介绍了标签页的切换方式,介绍的非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • 强烈推荐240多个jQuery插件提供下载

    强烈推荐240多个jQuery插件提供下载

    jQuery 是继 prototype 之后又一个优秀的 Javascript 框架。其宗旨是—写更少的代码,做更多的事情。它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及 的,它兼容 CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。
    2008-06-06
  • jQuery+css3实现Ajax点击后动态删除功能的方法

    jQuery+css3实现Ajax点击后动态删除功能的方法

    这篇文章主要介绍了jQuery+css3实现Ajax点击后动态删除功能的方法,可实现点击选区后出现选区收缩、滚动消失的效果,涉及jquery结合Ajax与数学运算实时操作页面元素的相关技巧,需要的朋友可以参考下
    2015-08-08

最新评论