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 相关文章推荐
JQuery 实现的页面滚动时浮动窗口控件
Jul 10 Javascript
JavaScript prototype属性使用说明
May 13 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
Sep 03 Javascript
创建js对象和js类的方法汇总
Dec 24 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
Aug 23 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
JS实现调用本地摄像头功能示例
May 18 Javascript
详解node字体压缩插件font-spider的用法
Sep 28 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
May 13 Javascript
vue中的 $slot 获取插槽的节点实例
Nov 12 Javascript
JS实现商品橱窗特效
Jan 09 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
牡丹941资料
2021/03/01 无线电
PHP 图片文件上传实现代码
2010/12/29 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
javascript定义函数的方法
2010/12/06 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
jquery使用经验小结
2015/05/20 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
python中random模块详解
2021/03/01 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
如何提高SQL Server的安全性
2016/07/25 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
UNIX文件系统常用命令
2012/05/25 面试题
建筑专业自荐信
2013/10/18 职场文书
大二学期个人自我评价
2014/01/13 职场文书
新郎接新娘保证书
2015/05/08 职场文书
table不让td文字溢出操作方法
2022/12/24 HTML / CSS