`
sungang_1120
  • 浏览: 323725 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

jQuery1.9(辅助函数)学习之—— jQuery.param( obj );

阅读更多

 

jQuery.param( obj );  返回一个String

 

描述: 创建一个数组或对象序列化的的字符串,适用于一个URL 地址查询字符串或Ajax请求。

 

 

jQuery.param( obj );

jQuery.param( obj, traditional );

 

  • obj
    类型: Array, Object
    用于数组或序列化的对象。
  • traditional
    类型: Boolean
    一个布尔值,指示是否执行了传统的“shallow”的序列化。

 

这个函数 可以将表单元素的值 转换为 序列化字符串 (更多细节查阅 .serialize() )。

在 jQuery 1.3中, 这个函数的返回值被用来代替函数作为一个字符串。

在 jQuery 1.4中, $.param() 方法将会通过深度递归的方式序列化对象,以便符合现代化脚本语言和框架的需求,比如 PHP 和 Ruby on Rails。 你可以通过设置 jQuery.ajaxSettings.traditional = true;废除这个全局功能。

如果传递的对象是一个数组,它必须是一个对象数组,其格式要跟.serializeArray()返回的格式一样:

 

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

 注意: 因为一些框架解析序列化的数字的能力有限, 在传递 obj 参数时我们应该谨慎,尽量不要传递含有对象的数组,或者数组中嵌套其它数组。

 

注意: 由于目前对序列化字符串没有统一的规约,此方法无法对复杂数据结构进行编码,使之可以支持所有语言。 在此之前, $.param 方法将继续保持其目前的形式。

 

 

在 jQuery 1.4 HTML5中input元素也是序列化的元素。

我们可以显示一个对象的查询字符串 和一个相应的URI-decoded 版本,如下:

var myObject = {
		a:{
			one:1,
			two:2,
			three:3
		},
		b:[1,2,3]
	};

var recursiveEncoded = $.param(myObject);
var recursiveDecoded = decodeURIComponent($.param(myObject));

alert(recursiveDecoded);
alert(recursiveEncoded);

 

recursiveEncodedrecursiveDecoded 的结果如下:

 

a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3
a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3

 

在jQuery1.4之前,要模仿$.param()的行为,我们可以设置 traditional 参数为 true

 

var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var shallowEncoded = $.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);
alert(shallowEncoded);
alert(shallowDecoded);

 

shallowEncodedshallowDecoded 的结果如下:

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

 

 

例子:

<!DOCTYPE html>
<html>
<head>
<style>div { color:red; }</style>
<script src="http://code.jquery.com/jquery-latest.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>

 

Demo:

width=1680&height=1050

 

序列号一些复杂的对象:

// <=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"

 

分享到:
评论

相关推荐

    python函数(内置函数和自定义函数)(csdn)————程序.pdf

    Python函数是编程中不可或缺的一部分,它们允许我们组织代码并重用功能。函数分为两种主要类型:内置函数和自定义函数。 内置函数是Python语言预先定义并提供的功能,无需额外导入即可直接使用。以下是一些常见的...

    jquery3.0.min.js+jquery.param.js+跨域代码Demo

    在本示例中,我们关注的是"jquery3.0.min.js"和"jquery.param.js"这两个jQuery库的特定版本,以及如何利用它们来解决跨域数据传输的问题。在"跨域代码Demo"中,我们将探讨如何通过URL参数实现Tomcat服务器与WebStorm...

    学习技术 jsf必备 ————JSF标签.pdf

    ### 学习技术 JSF必备 —— JSF标签详解 #### 1. JSF标签概述 JavaServer Faces (JSF) 是一种用于构建基于组件的用户界面的Java Web框架。它提供了一组丰富的标签库,使得开发人员能够更加高效地创建动态网页应用...

    安卓Android源码——Fragment例子.zip

    String param1 = args.getString("param1"); } ``` 5. **Fragment嵌套**:一个Fragment中可以包含其他Fragment,这有助于构建复杂布局。但需要注意的是,过多的嵌套可能会影响性能。 6. **保存和恢复状态**:当...

    JQuery.param

    **jQuery.param**是jQuery库中的一个非常重要的函数,主要用于序列化JavaScript对象,使其适合作为HTTP请求(如GET或POST)的一部分。这个功能在处理AJAX请求时尤其有用,因为浏览器通常要求URL参数以特定格式(即...

    day07:学习总结(csdn)————程序.pdf

    在今天的编程学习中,我们深入理解了几个关键的Java编程概念,包括三元条件运算符、扩展赋值运算符、包机制以及Javadoc的使用。接下来,我们将详细探讨这些知识点。 首先,我们接触到了扩展赋值运算符,例如`+=`、`...

    java.lang.UnsupportedOperationException异常(csdn)————程序.pdf

    理解`UnsupportedOperationException`并知道在处理集合参数时正确使用MyBatis的`&lt;foreach&gt;`标签是Java开发者必须掌握的关键技能之一。这有助于编写更健壮、可维护的代码,并减少因不兼容操作而导致的错误。在实际...

    QML中ListView使用cpp的Model(csdn)————程序.pdf

    } /** ListView 获取数据时调用的函数 * @brief MyListViewModel::data * @param index QModelIndex 对象,用于定位数据的位置 * @param role 角色,决定返回哪个部分的数据,默认为 Qt::DisplayRole * @return ...

    idea自动生成类和方法注释(csdn)————程序.pdf

    * @param ${PARAM_NAME} ${PARAM_DOC} * @return ${RETURN_DOC} * @throws ${EXCEPTION_DOC} */ ``` 6. 编辑变量,如 `${USER}`、`${DATE}` 和 `${PARAM_NAME}` 等,确保它们在实际使用时能正确替换为相应值。 ...

    android webview加载网页获取对应url 参数值的方法(csdn)————程序.pdf

    这里提供了一个名为`getValueByName`的函数,它接收两个参数:URL字符串和需要查找的参数名,然后返回对应的参数值。这个函数的工作原理是: 1. 查找URL中问号(?)的位置,以确定查询字符串的起始位置。 2. 提取...

    JavaScript调用java方法——dwr步骤.docx

    ### JavaScript调用Java方法——DWR使用步骤详解 #### 一、DWR简介 DWR (Direct Web Remoting) 是一种使服务器端的Java对象能够被客户端JavaScript代码直接调用的技术。通过这种方式,开发人员可以轻松地实现客户端...

    不要再重复造轮子了,Hutool这款开源工具类库贼好使(csdn)————程序.pdf

    Hutool是一款强大的Java工具类库,其设计目标是简化常见的开发任务,避免开发者重复编写通用的工具类。Hutool由" Hu"+"tool"组成,"Hu"来源...如果你想深入了解Hutool,可以访问其官方网站或GitHub仓库进行学习和使用。

    原生JS实现$.param() 函数的方法

    主要介绍了原生JS实现$.param() 函数的方法,由于遇到相关序列化的问题,但是vue项目中由于减少队jquery引用的限制,导致不能用$.param来序列化参数,下面小编给大家分享了实例代码,需要的朋友参考下吧

    前端上传多文件,携带多参数,java接收(省去频繁写一一对应的参数)(csdn)————程序.pdf

    @RequestParam("param") String param) // 接收前端附加的JSON字符串参数 throws IllegalStateException, IOException { // 将JSON字符串解析为HashMap对象 HashMap, Object&gt; hashMap = JSON.parseObject(param...

    Linux内核实验报告——实验4.docx

    在本篇Linux内核实验报告——实验4中,主要涵盖了两个关键知识点:动态模块设计和proc文件系统。实验目的是让学生理解和掌握Linux内核模块的编写,以及如何通过proc文件系统来与用户空间交互。 首先,实验A部分涉及...

    JAVA调用RFCdoc - ERP顾问最热爱的网络——金蝶社区.doc

    ### JAVA调用RFCdoc - ERP顾问最热爱的网络——金蝶社区 #### 一、概述 本文档旨在介绍如何利用JAVA技术调用SAP系统的远程功能模块(RFC)。通过这种方式,开发人员能够轻松地在JAVA应用中集成SAP系统的业务逻辑。...

    jQuery自定义插件开发基础1——jQuery实用函数的实现

    在本文中,我们将深入探讨jQuery自定义插件的开发基础,特别是如何实现jQuery实用函数。首先,我们需要了解jQuery的核心理念,它是一个轻量级的JavaScript库,极大地简化了DOM操作、事件处理、动画效果和Ajax交互。...

    Linux内核实验报告——实验4.pdf

    通过实际操作,学习者能够掌握如何在内核中创建动态模块,以及如何利用Proc文件系统来实现动态数据的交互,这对于Linux驱动程序的开发和系统维护至关重要。通过这样的实践,开发者能够更好地适应Linux内核的可扩展性...

    ibatis-core-3.0.jar org.apache.ibatis.annotations.Param

    `org.apache.ibatis.annotations.Param`是MyBatis中的一个重要注解,用于处理方法参数映射。 `@Param`注解主要用于SQL查询中的动态参数绑定,尤其是在动态SQL语句中。在MyBatis的映射文件或者Mapper接口中,当我们...

    jquery.param.patch.zip

    页面上jQuery需要把一个复杂类型的javascript数组对象作为参数传到Struts2 action,但是他们的默认格式不匹配导致action无法正确获得参数。...改jQuery源码并不是个好做法,最好是做个patch把$.param()覆盖掉.

Global site tag (gtag.js) - Google Analytics