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引用指针使用介绍
Nov 07 Javascript
将input file的选择的文件清空的两种解决方案
Oct 21 Javascript
javascript在myeclipse中报错的解决方法
Oct 29 Javascript
Javascript执行效率全面总结
Nov 04 Javascript
Javascript之Date对象详解
Jun 07 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
Jan 13 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
Sep 12 Javascript
Angular 4.0学习教程之架构详解
Sep 12 Javascript
vue跳转方式(打开新页面)及传参操作示例
Jan 26 Javascript
小程序实现上传视频功能
Aug 18 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赋值的内部是如何跑的详解
2019/01/13 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python中的装饰器用法详解
2015/01/14 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
在Python中使用SQLite的简单教程
2015/04/29 Python
Python列表切片用法示例
2017/04/19 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
python编写俄罗斯方块
2020/03/13 Python
python实现梯度下降法
2020/03/24 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
优秀的自荐信要注意哪些
2014/01/03 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
财务工作失误检讨书
2015/02/19 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
离职告别感言
2015/08/04 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers