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 相关文章推荐
SharePoint 客户端对象模型 (一) ECMA Script
May 22 Javascript
在jQuery中 常用的选择器介绍
Apr 16 Javascript
JS获取当前网址、主机地址项目根路径
Nov 19 Javascript
用JavaScript实现类似于ListBox功能示例代码
Mar 09 Javascript
javascript跨浏览器的属性判断方法
Mar 16 Javascript
js实现圆盘记速表
Aug 03 Javascript
Bootstrap实现弹性搜索框
Jul 11 Javascript
Bootstrap模态窗口源码解析
Feb 08 Javascript
React Native实现进度条弹框的示例代码
Jul 17 Javascript
AngularJS日程表案例详解
Aug 15 Javascript
puppeteer库入门初探
Jan 09 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 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
日本十大惊悚动漫
2020/03/04 日漫
php桌面中心(四) 数据显示
2007/03/11 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
自制简易打赏功能的实例
2017/09/02 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
python实现计算器功能
2019/10/31 Python
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
EJB的角色和三个对象
2015/12/31 面试题
先进个人事迹材料
2014/01/25 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
结婚保证书范文
2014/04/29 职场文书
干部选拔任用方案
2014/05/26 职场文书
会计岗位说明书
2014/07/29 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
学校食堂管理制度
2015/08/04 职场文书
合作合同协议书
2016/03/21 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
Python学习之迭代器详解
2022/04/01 Python