JQuery中serialize() 序列化


Posted in Javascript onMarch 13, 2015

本文导读:在jQuery中,当我们使用ajax时,常常需要拼装input数据以键值对(Key/Value)的形式发送到服务器,用JQuery的serialize方法可以轻松的完成这个工作,使用这个方法可以将表单序列化为键值对(key1=value1&key2=value2…)后提交。下面介绍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  }]

以上就是本文所述的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
javascript 写类方式之三
Jul 05 Javascript
两个比较有用的Javascript工具函数代码
Feb 17 Javascript
js函数调用常用方法详解
Dec 03 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
Feb 06 Javascript
两种常用的javascript数组去重方法思路及代码
Mar 26 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
JS增加行复制行删除行的实现代码
Nov 09 Javascript
jquery插件hiAlert实现网页对话框美化
May 03 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
JS实现快递单打印功能【推荐】
Jun 21 Javascript
mpvue小程序循环动画开启暂停的实现方法
May 15 Javascript
基于JavaScript实现随机点名器
Feb 25 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 #Javascript
JQuery中$.each 和$(selector).each()的区别详解
Mar 13 #Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
Mar 13 #Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
Mar 13 #Javascript
JavaScript中常用的六种互动方法示例
Mar 13 #Javascript
jQuery.position()方法获取不到值的安全替换方法
Mar 13 #Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 #Javascript
You might like
数据库相关问题
2006/10/09 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
python sys.argv[]用法实例详解
2018/05/25 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
特步官方商城:Xtep
2017/03/21 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
大二自我鉴定范文
2013/10/05 职场文书
会计核算科岗位职责
2014/03/19 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
丧事主持词大全
2014/04/02 职场文书
全运会口号
2014/06/20 职场文书
教师节领导致辞
2015/07/29 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
python基础之函数的定义和调用
2021/10/24 Python
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js