`
iwebcode
  • 浏览: 2007872 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

jQuery源码分析 :表单序列化动作

 
阅读更多
jQuery源码分析 :表单序列化动作

首先需要明白默认表单提交动作会如何将数据发送到服务器

1)对表单字段的名称和值进行URL编码,使用&分隔

2)不发送禁用的表单字段

3)只发送勾选的复选框和单选按钮

4)不发送type为"reset"和"button"的按钮

5)多选选择框中的每个选中的值单独一个条目

6)在单击提交按钮提交表单的情况下,也会发送提交按钮;否则,不发过提交按钮,也包括type为"image"的<input/>元素

7)<select/>元素的值,就是选中的<option/>元素的value特性的值。如果<option/>元素没有value特性,则是<option/>元素的文本值。

在表单序列化过程中,一般不包含任何按钮字段,因为结果字符串很可能是通过其它方式提交的,如ajax


jQuery表单序列化调用实便 :var data = $('#id').serialize(); // 'name1=value1&name2=value2&....'

jQuery表单序列化源码 :
serialize: function() {
return jQuery.param( this.serializeArray() );
},

serializeArray: function() {
return this.map(function(){
return this.elements ? jQuery.makeArray( this.elements ) : this;
})
.filter(function(){
return this.name && !this.disabled &&
( this.checked || rselectTextarea.test( this.nodeName ) ||
rinput.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.replace( rCRLF, "\r\n" ) };
}) :
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
}).get();
}

param: function( a, traditional ) {
var s = [],
add = function( key, value ) {
// If value is a function, invoke it and return its value
value = jQuery.isFunction( value ) ? value() : value;
s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
};

// Set traditional to true for jQuery <= 1.3.2 behavior.
if ( traditional === undefined ) {
traditional = jQuery.ajaxSettings.traditional;
}

// If an array was passed in, assume that it is an array of form elements.
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
// Serialize the form elements
jQuery.each( a, function() {
add( this.name, this.value );
});

} else {
// If traditional, encode the "old" way (the way 1.3.2 or older
// did it), otherwise encode params recursively.
for ( var prefix in a ) {
buildParams( prefix, a[ prefix ], traditional, add );
}
}

// Return the resulting serialization
return s.join( "&" ).replace( r20, "+" );
}
分享到:
评论

相关推荐

    jQuery源码 jQuery源码 jQuery源码

    jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码...

    Jquery源码分析 源码

    Jquery源码分析 清晰 Jquery源码分析 清晰 Jquery源码分析 清晰 Jquery源码分析 清晰

    jquery源码分析

    jquery源码分析,包括入口技术,选择器入口,以及在选择器使用的时候需要注意的优化思路

    jQuery源码分析系列.pdf

    jQuery源码分析系列.pdf

    jquery 源码分析

    jquery 源码分析。

    JQuery源码详细中文注释_Jquery源码分析_

    jquery1.2.6源码分析,其中里面含有源码详细的中文注释

    jQuery源码分析-插件

    jQuery源码分析-插件

    jQuery源码分析系列中文PDF版

    资源名称:jQuery源码分析系列 中文PDF版内容简介:jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了Javascript开发开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax的操作。其独特而又优雅...

    jQuery源码分析(1.7)

    jQuery的源码分析, 对js的代码提升大有帮助!

    JQuery扩展包-多种序列化方式

    Jquery自带的序列化,仅对form表单进行序列化,有很大的局限性,现在对齐进行扩展可以进行任意的序列化,包括json格式,字符串格式、数组格式,数组时自动转化为字符串等。并可以根据开发需要,随时扩展自己想要的...

    jQuery源码分析视频教程

    jQuery源码分析视频教程总计116课,按照jquery每个区段实现的内容,精确地讲解源码中是怎么实现我们开发中用到的jquery得方法的

    JQuery表单提交和后台交互源码20130509

    JQuery表单提交和后台交互源码 源码描述: jQuery表单提交和后台交互,非常简单。 也许你习惯了使用基于jQuery的表单插件,裸写也不错 仅使用jQuery提交表单和后台交互,不使用基于jQuery的表单插件 方式1、取到...

    jQuery技术内幕:深入解析jQuery架构设计与实现原理

    资源名称:jQuery技术内幕:深入解析jQuery架构设计与...接着详细分析了底层支持模块的源码实现,包括:选择器 Sizzle、异步队列 Deferred、数据缓存 Data、资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    jQuery源码分析-事件(1).

    jQuery源码分析-事件(1).

    jQuery源码分析

    jQuery源码分析 00 前言开光 01 总体架构 03 构造jQuery对象-源码结构和核心函数 03 构造jQuery对象-工具函数 05 异步队列 Deferred 08 队列 Queue 09 属性操作 10 事件处理-Event-概述和基础知识 15 AJAX-前置过滤...

    Jquery1.2.6 源码分析

    Jquery1.2.6源码分析及源码文件 博文链接:https://jljlpch.iteye.com/blog/234218

    Jquery1.26版本的源码分析

    Jquery1.26版本的源码分析,pdf格式文档,相当清淅的书籍,前端开发者必看的类库书籍,虽然网上有很多jQuery的实例,但真正深入分析介绍jQuery源码细节的文档太少了,所以本篇文稿希望是你期待的,文档内容包括:...

    jquery api, jquery ui api, jquery源码分析

    Jquery是继prototype之后又一个优秀的Javascrīpt框架

    JQUERY技术内幕:深入解析QUERY架构设计与实现原理 完整版 共两个包

    进而通过“构造jquery对象”章节分析了构造函数jquery()的各种用法和内部构造过程;接着详细分析了底层支持模块的源码实现,包括:选择器sizzle、异步队列deferred、数据缓存data、队列queue、浏览器功能测试support...

Global site tag (gtag.js) - Google Analytics