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上传图片前的限制包括(jpg jpg gif及大小高宽)等
Dec 19 Javascript
javascript自启动函数的问题探讨
Oct 05 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
Aug 18 Javascript
JavaScript中Function详解
Feb 27 Javascript
Javascript 5种方法实现过滤删除前后所有空格
Jun 22 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
Jun 29 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
Jul 20 Javascript
JS设计模式之单例模式(一)
Sep 29 Javascript
Vue中computed、methods与watch的区别总结
Apr 10 Javascript
Vuex,iView UI面包屑导航使用扩展详解
Nov 04 Javascript
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
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
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
小程序实现投票进度条
2019/11/20 Javascript
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python中字符编码简介、方法及使用建议
2015/01/08 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
python实现雨滴下落到地面效果
2018/06/21 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
浅谈Python __init__.py的作用
2020/10/28 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
银行实习自我鉴定
2013/10/12 职场文书
销售会计工作职责
2013/12/02 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
思想道德自我评价2015
2015/03/09 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
电视新闻稿
2015/07/17 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android