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 表单中textarea字数限制实现代码
Dec 07 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
Dec 11 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
Mar 11 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
Dec 12 Javascript
轮播的简单实现方法
Jul 28 Javascript
AngularJs Understanding the Model Component
Sep 02 Javascript
令按钮悬浮在(手机)页面底部的实现方法
May 02 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
Nov 11 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
vue.js路由mode配置之去掉url上默认的#方法
Nov 01 Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 Javascript
vue el-upload上传文件的示例代码
Dec 21 Vue.js
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树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python中的map、reduce和filter浅析
2014/04/26 Python
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python之pymysql的使用小结
2019/07/01 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
python Shapely使用指南详解
2020/02/18 Python
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
自我鉴定范文200字
2013/10/02 职场文书
科室工作的个人自我评价
2013/10/30 职场文书
初中军训感想300字
2014/03/05 职场文书
施工安全生产承诺书
2014/05/23 职场文书
任命书怎么写
2014/06/04 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
大学生见习报告总结
2014/11/04 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
2015国庆节感想
2015/08/04 职场文书
社会实践心得体会范文
2016/01/14 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang