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 相关文章推荐
用js实现的自定义的对话框的实现代码
Mar 21 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
Apr 06 Javascript
详解JavaScript函数对象
Nov 15 Javascript
JS基于面向对象实现的多个倒计时器功能示例
Feb 28 Javascript
webpack将js打包后的map文件详解
Feb 22 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 Javascript
vue自定义指令directive的使用方法
Apr 07 Javascript
对layui中的onevent 和event的使用详解
Sep 06 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 Javascript
详解JavaScript之ES5的继承
Jul 08 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
PHP4在Windows2000下的安装
2006/10/09 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
prototype 学习笔记整理
2009/07/17 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python闭包实现计数器的方法
2015/05/05 Python
python实现自动更换ip的方法
2015/05/05 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
python爬虫添加请求头代码实例
2019/12/28 Python
python 19个值得学习的编程技巧
2020/08/15 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
法学专业应届生求职信
2013/10/16 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
教师继续教育反思周记
2015/06/25 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers