JQuery中serialize()用法实例分析


Posted in Javascript onFebruary 06, 2015

本文实例讲述了JQuery中serialize()用法。分享给大家供大家参考。具体分析如下:

一、serialize()定义和用法:

serialize()方法通过序列化表单值,创建标准的URL编码文本字符串,它的操作对象是代表表单元素集合的jQuery 对象。你可以选择一个或多个表单元素(比如input或文本框),或者 form 元素本身。序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。
 
语法:

$(selector).serialize()
 
详细说明

1、.serialize() 方法创建以标准 URL 编码表示的文本字符串。它的操作对象是代表表单元素集合的 jQuery 对象。

2、.serialize() 方法可以操作已选取个别表单元素的 jQuery 对象,比如 <input>, <textarea> 以及 <select>。不过,选择 <form> 标签本身进行序列化一般更容易些

3、只会将”成功的控件“序列化为字符串。如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用 name 属性。
 
4、form里面的name不能够用 Js、jquery里的关键字。
例如:length

<form id="form1">

   <input name="length" type="text" value="pipi" />

   <input name="blog" type="text" value="blue submarine" />

</form>
//使用:$("#form1").serialize();

上面则获取不到值。
 
二、JQuery中serialize()实例
 
1、ajax serialize()

$.ajax({

    type: "POST",

    dataType: "json",

    url:ajaxCallBack,

    data:$('#myForm').serialize(),// 要提交表单的ID

    success: function(msg){

        alert(msg);

    }

});

2、serialize() 序列化表单实例

<script src="jquery-1.7.min。js"></script>

<script>

$(function(){

   $("#submit").click(function(){

     alert($("#myForm").serialize());

   });

});

</script>

<form id="myForm">

昵称 <input type="text" name="username" value="admin" /><br />

密码 <input type="password" name="password" value="admin123" /><br />

<input type="button" id="submit" value="序列化表单" /> 

</form>

点击按钮之后弹出:

username=admin&password=admin123
 
三、serialize是用param方法对serializeArray的一个简单包装
 
1、$.param()

$.param()方法是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化。
 
param方法的js代码

param: function( a ) {

///    <summary>

///        This method is internal.  Use serialize() instead.

///    </summary>

///    <param name="a" type="Map">A map of key/value pairs to serialize into a string.</param>'

///    <returns type="String" />

///    <private />
var s = [ ];
function add( key, value ){

    s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);

};
// If an array was passed in, assume that it is an array

// of form elements

if ( jQuery.isArray(a) || a.jquery )

    // Serialize the form elements

    jQuery.each( a, function(){

 add( this.name, this.value );

    });
// Otherwise, assume that it's an object of key/value pairs

else

    // Serialize the key/values

    for ( var j in a )

 // If the value is an array then the key names need to be repeated

 if ( jQuery.isArray(a[j]) )

     jQuery.each( a[j], function(){

  add( j, this );

     });

 else

     add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
// Return the resulting serialization

return s.join("&").replace(/%20/g, "+");

}

例如:

var obj = {a:1,b:2,c:3};

var k = $.param(obj);

alert(k);    //输出a=1&b=2&c=3

 
2、serializeArray
 
serializeArray方法是将一个表单当中的各个字段序列化成一个数组
serializeArray方法的jquery定义
serializeArray: function() {

///    <summary>

///        Serializes all forms and form elements but returns a JSON data structure.

///    </summary>

///    <returns type="String">A JSON data structure representing the serialized items.</returns>
return this.map(function(){

    return this.elements ? jQuery.makeArray(this.elements) : this;

})

.filter(function(){

    return this.name && !this.disabled &&

 (this.checked || /select|textarea/i.test(this.nodeName) ||

     /text|hidden|password|search/i.test(this.type));

})

.map(function(i, elem){

    var val = jQuery(this).val();

    return val == null ? null :

 jQuery.isArray(val) ?

     jQuery.map( val, function(val, i){

  return {name: elem.name, value: val};

     }) :

     {name: elem.name, value: val};

    }).get();

}

serializeArray数据例子:

[ { 

 name : username, 

 value : 中国 

 }, { 

 name : password, 

 value : xxx 

}]

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
CSS+Jquery实现页面圆角框方法大全
Dec 24 Javascript
Javascript Function对象扩展之延时执行函数
Jul 06 Javascript
将string解析为json的几种方式小结
Nov 11 Javascript
jquery 插件学习(二)
Aug 06 Javascript
微信小程序页面开发注意事项整理
May 18 Javascript
JavaScript设计模式之单例模式详解
Jun 09 Javascript
JS中的回调函数实例浅析
Mar 21 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
Mar 28 Javascript
微信小程序下拉菜单效果的实例代码
May 14 Javascript
Vue 实现从小到大的横向滑动效果详解
Oct 16 Javascript
JavaScript this指向相关原理及实例解析
Jul 10 Javascript
jQuery中on()方法用法实例详解
Feb 06 #Javascript
JS实现文字向下滚动完整实例
Feb 06 #Javascript
jquery中filter方法用法实例分析
Feb 06 #Javascript
Jquery对select的增、删、改、查操作
Feb 06 #Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 #Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 #Javascript
js实现多选项切换导航菜单的方法
Feb 06 #Javascript
You might like
PHP 实用代码收集
2010/01/22 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
Javascript !!的作用
2008/12/04 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
Python中安装easy_install的方法
2018/11/18 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
python实现代码统计程序
2019/09/19 Python
django框架创建应用操作示例
2019/09/26 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
利用python实现逐步回归
2020/02/24 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
大学生求职信范文应怎么写
2014/01/01 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
入党自我评价优缺点
2014/01/25 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
服务承诺口号
2014/05/22 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
关于开学的感想
2015/08/10 职场文书