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 相关文章推荐
人人网javascript面试题 可以提前实现下
Jan 05 Javascript
javascript中onclick(this)用法介绍
Apr 19 Javascript
javascript获得网页窗口实际大小的示例代码
Sep 21 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
Sep 01 Javascript
关于javascript sort()排序你可能忽略的一点理解
Jul 18 Javascript
Angular移动端页面input无法输入的解决方法
Nov 14 Javascript
JavaScript&quot;模拟事件&quot;的注意要点详解
Feb 13 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 Javascript
微信小程序图片左右摆动效果详解
Jul 13 Javascript
vue封装swiper代码实例解析
Oct 08 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
JavaScript实现横版菜单栏
Mar 17 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
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
js重写方法的简单实现
2016/07/10 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
python os用法总结
2018/06/08 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
python numpy中cumsum的用法详解
2019/10/17 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
教你一步步实现一个简易promise
2021/11/02 Javascript
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js
MySQL事务的隔离级别详情
2022/07/15 MySQL