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 相关文章推荐
Prototype使用指南之enumerable.js
Jan 10 Javascript
详解JS函数重载
Dec 04 Javascript
node.js中的fs.link方法使用说明
Dec 15 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
Jan 18 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
Nuxt.js踩坑总结分享
Jan 18 Javascript
浅析Vue 生命周期
Jun 21 Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 Javascript
JavaScript实现拖拽效果
Mar 16 Javascript
vue和小程序项目中使用iconfont的方法
May 19 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
php 生成短网址原理及代码
2014/01/23 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
jQuery链使用指南
2015/01/20 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
javascript实现评分功能
2020/06/24 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
netbeans7安装python插件的方法图解
2013/12/24 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
python实现单链表的方法示例
2019/09/03 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
Sony C++笔试题
2013/03/10 面试题
小学生元旦广播稿
2014/02/21 职场文书
总结表彰大会主持词
2014/03/26 职场文书
单位计划生育责任书
2015/05/09 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
asyncio异步编程之Task对象详解
2022/03/13 Python