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 相关文章推荐
InnerHtml和InnerText的区别分析
Mar 13 Javascript
jquery实现按Enter键触发事件示例
Sep 10 Javascript
jquery实现多条件筛选特效代码分享
Aug 28 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
Oct 04 Javascript
Vue实现typeahead组件功能(非常靠谱)
Aug 26 Javascript
js使用原型对象(prototype)需要注意的地方
Aug 28 Javascript
详解vue-cli之webpack3构建全面提速优化
Dec 25 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
Apr 26 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
小程序云开发实现数据库异步操作同步化
May 18 Javascript
js回调函数原理与用法案例分析
Mar 04 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你的验证码安全码?
2007/01/02 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
python求解汉诺塔游戏
2020/07/09 Python
python热力图实现简单方法
2021/01/29 Python
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
经典c++面试题五
2014/12/17 面试题
路政管理求职信
2014/06/18 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
学习党章的体会
2014/11/07 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python