位置: 编程技术 - 正文

jQuery1.9.1源码分析系列(十六)ajax之ajax框架(jquery开源)

编辑:rootadmin

推荐整理分享jQuery1.9.1源码分析系列(十六)ajax之ajax框架(jquery开源),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:jquery源码实现原理,jquery1.8,jquery fadein 源码,jquery源码分析,jquery animate源码,jquery.min.js源代码,jquery源码是什么水平,jquery源码实现原理,内容如对您有帮助,希望把文章链接给更多的朋友!

AJAX 简介

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

您应当具备的基础知识

在继续学习之前,您需要对下面的知识有基本的了解:

HTML / XHTMLCSSJavaScript / DOM

如果您希望首先学习这些项目,请在我们的首页访问这些教程。

什么是 AJAX ?

AJAX = 异步 JavaScript 和 XML。

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

Google Suggest

在 年,Google 通过其 Google Suggest 使 AJAX 变得流行起来。

Google Suggest 使用 AJAX 创造出动态性极强的 web 界面:当您在谷歌的搜索框输入关键字时,JavaScript 会把这些字符发送到服务器,然后服务器会返回一个搜索建议的列表。

今天就开始使用 AJAX

AJAX 基于已有的标准。这些标准已被大多数开发者使用多年。

既然是ajax框架,那么闲谈一谈jQuery的ajax处理思路。

  现在的浏览器都支持ajax,只不过不同的浏览器使用方法可能有不同(IE使用new window.ActiveXObject("Microsoft.XMLHTTP"),标准浏览器使用new window.XMLHttpRequest())。如果按照这种思路,貌似jQajax只需要做好兼容处理就行了?

  不是的,原生的ajax有一个说大不大说小不小的缺点——不支持跨域(同源策略由来已久,自行百度)。所以jQajax添加了这方面的处理,jQajax是如何解决跨域问题的?

  <img src="  是能取到图片的,很明显图片的路径和你的服务端不是一个域的。你可以试试看所有的带有src属性的标签都不受同源策略的影响。所以,jQuery就使用了这个属性,对于跨域请求使用script标签的src来请求路径。

  然后jQuery在加上对ajax事件的三种监听方式:

  1.全局事件:$(document).on(‘ajaxStart',func);

  2.ajax设置回调项:$.ajax({url: "php.html", complete: func });

  3.deferred绑定方式:$.ajax(…).done(func);

jQuery1.9.1源码分析系列(十六)ajax之ajax框架(jquery开源)

  基本上这就是jQajax所做的事情。

  在正真进入ajax框架核心之前,先来分析一jQuery准备的几个序列化提交表单的函数。

a. 表单序列化

  所谓的表单序列化即将表单需要提交的内容组成类似:“key=value&key=value…”形式的字符串。

  序列化用到三个函数:

  jQuery.fn. serialize()(序列化函数,筛选出表单中需要提交的数据并以序列化字符串方式返回,形如:“key=value&key=value…”)

  jQuery.fn. serializeArray()(筛选出表单中需要提交的数据并以key/value键值对的对象数组格式返回,返回[{name:'key',value:'select1'},{name:'selectM',value:'selectM1'}, {name:'selectM',value:'selectM2'}, { name:'key2',value:0}…])

  jQuery.param(serializeArray, traditional )(将key/value键值对的对象数组序列化为“key=value&key=value…”字符串)。

  serialize直接调用jQuery.param( this.serializeArray() )即可。

  serializeArray的源码如下:主要进行三个步骤:提取表单元素、过滤出满足提交条件的表单元素、组合成key/value键值对的对象数组

  需要注意的是jQuery的过滤结果符合正常的表单提交结果://过滤出为需要提交的表单元素(有name名称、非disabled元素、非提交按钮等元素、checkbox/radio的checked的元素)

  param函数源码如下:主要进行两个处理:将key/value成作为URI组件编码(保证key和value不会出现特殊符号,即保证了“=”分割的正确性)、使用“&”链接并将空白符被替换成了"+"

  其中encodeURIComponent详细点击查看

b. ajax的事件监听

  给ajax绑定事件有三种方式

  1.全局事件:$(document).on(‘ajaxStart',func);

  2.ajax设置回调项:$.ajax({url: "php.html", complete: func });

  3.deferred绑定方式:$.ajax(…).done(func);

  接下来我们一一讲解他们的实现。

全局事件(ajaxStart/ajaxStop/ajaxComplete/ajaxError/ajaxSuccess/ajaxSend)

  使用.on事件绑定这种通用方式我们毫无疑问是可以绑定ajax监听事件,除此之外还可以直接使用$(…).ajaxStart(func)来绑定事件。他们的实现也是用.on来绑定。

  触发事件比较简单,在进行ajax处理过程中在合适的时机直接使用jQuery.event.trigger直接触发。以ajaxStart为例

ajax设置回调项(beforeSend/complete/success/error)

  触发设置回调项分两种:beforeSend直接在适当的时机调用。源码

deferred方式绑定回调

  Deferred方式绑定事件就不用特别说明了,因为ajax本身就是一个延时对象。直接使用$.ajax(…).done(fn).fail(fn). progress(fn).always(fn).then(fn)。源码

简要了解jQuery移动web开发的响应式布局设计 响应式布局设计是根据用户设备的屏幕分辨率来响应用户设备的一种设计。这意味着,无论用户是在移动、平板还是桌面设备上浏览Web页面,设计都将

jQuery移动web开发之页面跳转和加载外部页面的实现 changePage()页面跳转jQuery.mobile.changePage(to[,options])从一个页面跳转到另一个页面,使用$.mobile对象的changePage方法来实现。但要使用此方式的时候,要以点击

使用jQuery mobile库检测url绝对地址和相对地址的方法 path.isAbsoluteUrl()检测绝对网址jQuery.mobile.path.isAbsoluteUrl(url)如果一个URL是绝对的实用方法。如果URL是绝对的这个函数返回一个布尔值true,否则返回false。!d

标签: jquery开源

本文链接地址:https://www.jiuchutong.com/biancheng/376209.html 转载请保留说明!

上一篇:jQuery使用$.ajax进行异步刷新的方法(附demo下载)

下一篇:简要了解jQuery移动web开发的响应式布局设计(jquery操作)

  • 保险费车船税会计分录
  • 个人独资企业税种有哪些
  • 一般纳税人的税种有哪些
  • 电信没有基站为什么信号也很好
  • 投资控股型公司什么意思
  • 应缴纳的增值税计算公式
  • 小规模纳税人能开9个点的发票吗
  • 结转损益后损益类科目为0吗
  • 税务局代开的增值税专票可以红冲吗?
  • 增值税系统技术维护费记什么科目
  • 转让股权原值的相关资料
  • 被开除了怎么办理手续
  • 完成税务登记之后多久开始报个税?
  • 未分配利润应该在借方还是贷方??
  • 咨询服务费怎么结转成本
  • 5年内亏损弥补账务
  • 正确解读《非居民金融账户涉税信息尽职调查管理办法》
  • 企业单位名称变更说明
  • 资本公积转增的股票可以转让吗
  • 归还银行贷款怎么做分录
  • 公司注销时存货计税依据
  • 工费经费用计提吗
  • 代开专票交的城建税怎么申报附加税
  • 应收账款一般按实际发生额入账
  • 不同业务的进项税额抵扣
  • 销售东西的物流叫什么
  • 1697510586
  • 办公家具折旧年限及计算方法
  • 应收账款 预收账款合并
  • 客户预付款了尾款怎么办
  • PHP:iconv_strpos()的用法_iconv函数
  • 手机忘记密码怎么解开锁华为
  • 爱德华王子岛的气候
  • 互联网行业成本控制现状
  • hypergraph learning
  • php的两种运行方式
  • 花雕典故
  • yolov5加入注意力机制后网络后进行剪枝
  • uni app ios
  • 不得抵扣增值税的情形有哪些
  • 购入固定资产的进项税额可以抵扣吗
  • 香港企业的所得税怎么算
  • 委托境外机构销售开发产品
  • 每个季度30万免增值税
  • 织梦cms怎么样
  • 织梦官方网站
  • 法人可以领退休金吗
  • 股权转让过程中的税费
  • 用jdom创建中文的xml文件的方法
  • access china
  • 翻唱歌曲发行至国外的好处
  • 小额贷款公司如何运作
  • 公司内部食堂招待费账务处理
  • 合伙企业分红怎么做账
  • 开出银行汇票支付货款
  • 城镇土地使用税征收范围
  • 售后回租含手续费吗
  • 以物易物方式销售货物的增值税处理
  • 公司支付账户
  • 库存商品品种太多如何算成本
  • 差旅费的进项税率是多少
  • 集团公司对子公司总经理的绩效考核
  • 红字信息表开错了对方已开发票怎么处理
  • 现金日记账的日期栏是指记账凭证的日期
  • wind如何安装
  • windows不兼容
  • solaris版本查询
  • macbook怎么关闭设置上的1
  • win7下安装XP
  • win10系统找不到mrt
  • wps文字打印不清楚怎么办
  • mac safari浏览器翻译功能
  • [个人学习笔记]Android 从网络获取json并解析 --Demo
  • 安卓手机屏幕不好使了怎么办
  • linux 进程监控
  • vue中使用类class
  • javascript入门基础
  • javascript教程完整版
  • 药店迁址流程2019
  • 2021沈阳车船税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设