Ajax 的底层实现都是浏览器提供的,所以任何基于 api 上面的框架或者库,都只是说对于功能的灵活与兼容维护性做出最优的扩展。
Ajax 请求的流程:
1、通过 new XMLHttpRequest 或其它的形式(指IE)生成 ajax 的对象 xhr。 2、通过 xhr.open(type, url, async, username, password) 的形式建立一个连接。 3、通过 etRequestHeader 设定 xhr 的请求头部(request header)。 4、通过 send(data) 请求服务器端的数据。 5、执行在 xhr 上注册的 onreadystatechange 回调处理返回数据。
这几步之中,我们开发者可能会遇到的问题
1、跨域 2、json的格式 3、dataType 4、AJAX乱码问题 5、页面缓存 6、状态的跟踪 7、不同平台兼容
jQuery 主要就是解决上面这问题,之后就在这个基础之上进行扩展,jQuery2.0.3 版的 Ajax 部分源码大概有 1200 多行,主要针对 ajax 的操作进行了一些扩展,使之更加灵活,jQuery 在 1.5 中对 Ajax 模块的重写,增加了几个新的概念,Ajax 模块提供了三个新的方法用于管理、扩展 Ajax 请求,分别是:
前置过滤器 jQuery. ajaxPrefilter 请求分发器 jQuery. ajaxTransport 类型转换器 ajaxConvert
除此之后还重写了整个异步队列处理,加入了 deferred,可以将任务完成的处理方式与任务本身解耦合,使用 deferreds 对象,多个回调函数可以被绑定在任务完成时执行,甚至可以在任务完成后绑定这些回调函数。这些任务可以是异步的,也可以是同步的。
比如之前提到的:
请验证,完成请求
由于请求次数过多,请先验证,完成再次请求
打开微信扫码自动绑定
绑定后可得到
使用 Ctrl+D 可将课程添加到书签
举报