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 相关文章推荐
基于jquery的3d效果实现代码
Mar 23 Javascript
javascript中sort()的用法实例分析
Jan 30 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
Aug 13 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
Sep 14 Javascript
JS实现的最简Table选项卡效果
Oct 14 Javascript
第三章之Bootstrap 表格与按钮功能
Apr 25 Javascript
jquery实现网站列表切换效果的2种方法
Aug 12 Javascript
jquery中关于bind()方法的使用技巧分享
Mar 30 jQuery
10行原生JS实现文字无缝滚动(超简单)
Jan 02 Javascript
Vue 全局loading组件实例详解
May 29 Javascript
JavaScript创建表格的方法
Apr 13 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
Aug 19 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
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
php UBB 解析实现代码
2011/11/27 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
社会实践单位意见
2015/06/05 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python