好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

AJAX

AJAX

Asynchronous JavaScript + XML(异步JavaScript和XML), 其本身不是一种新技术,而是 一个 在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’ 方法 。(MDN)

AJAX 是2005年提出的一种术语,并不代表某个特定的技术。

其译名 异步JavaScript和XML 描述出了核心,就是使用 JavaScript 发送异步 HTTP 请求,这样就摆脱了想要和服务端交互,必须刷新 页面 的痛点。

学习 AJAX 相关 内容 前,建议有一些简单的 HTTP 相关知识的储备,否则很难理解其工作流程。

1. XMLHttpRequest 对象

XMLHttpRequest 对象可以提供给前端开发人员使用 JavaScript 发起 HTTP 请求的能力。该对象会被简称为 XHR 对象。

  var  xhr  =   new   XMLHttpRequest  (  )  ; 
 

这样就获得到了 一个 XHR 对象的实例。接下来可以使用他发起请求。

  var  xhr  =   new   XMLHttpRequest  (  )  ; 

xhr .  onreadystatechange   =   function  (  )   {   // 当 readyState 改变的时候 
   if   ( xhr . readyState  ===    &&  xhr . status  ===   )   {   // 判断当前请求的状态 与 请求的状态码 
    console .  log  ( xhr . responseText )  ;   //  输出 服务端返回的 内容  
   } 
 } 
xhr .  open  (  'GET'  ,   '/'  ,   true  )  ;   // 设定 GET 请求,请求的路径是 /,并且请求是异步的 
xhr .  send  (  )  ;   // 发送! 
 

onreadystatechange 是 一个 事件处理器 属性 ,每次 readyState 改变的时候都会触发。

如果 readyState 为 4,即请求已经完成,并且状态码是 200,表示请求结束并且服务端成功响应。

响应成功,通过 responseText 获取 到服务端响应的 内容 。

通过 open 方法 ,设置请求的 方法 、路径等,例子中设置了 / 路径,如果当前 站点 的域名是 imooc.com ,则请求地址就是 imooc.com/ ,拿到的数据应该会是网站 首页 的 HTML。

然后通过 send 方法 发送请求,发送后 readyState 会在各个阶段发送改变,然后 调用 onreadystatechange 。

这是 一个 AJAX 请求较为基本的流程。

更多与 AJAX 相关的 内容 可以参阅 AJAX Wiki ,相信阅读完会有许多收获。

2. ActiveXObject

IE6 之前是没有 XHR 对象的,需要使用 ActiveXObject 对象,这是 IE 特有的。

考虑到 IE6 之前版本浏览器的市场份额,个人觉得只需 要做 个了解,没太大必要再去学习使用 ActiveXObject 对象。

3. 小结

现代网页的构成几乎离不开 AJAX 技术,如果 JavaScript 无法发起 HTTP 请求,几乎所有的现代网站都会瘫痪,变得难用。

除了 XHR 对象之外,还有 fetch API 这个后起之秀,也可以承担 XHR 对象的工作。但 fetch 还有部分缺陷,如无法监控进度,对状态码的处理逻辑不够符合业务,所以 用户 面较广的产品使用一般不会选择 fetch。

异常处理 ? ?BOM 常用属性和方法

查看更多关于AJAX的详细内容...

  阅读:42次

上一篇

下一篇

第1节:什么是 JavaScript    第2节:学习环境准备    第3节:调试方案    第4节:JavaScript 变量    第5节:JavaScript 数据类型    第6节:JavaScript if 语句    第7节:for 语句    第8节:JavaScript 算数运算符    第9节:JavaScript 比较运算符    第10节:JavaScript 逻辑运算符    第11节:JavaScript 函数    第12节:JavaScript 表达式    第13节:JavaScript 对象    第14节:JavaScript 字符串    第15节:JavaScript 数字    第16节:JavaScript 数组    第17节:JavaScript switch 语句    第18节:JavaScript while 语句    第19节:JavaScript 的 break 与 continue    第20节:JavaScript with    第21节:document.cookie    第22节:JavaScript Function    第23节:JavaScript Math    第24节:JavaScript Date    第25节:JavaScript RegExp    第26节:JavaScript JSON    第27节:什么是 DOM    第28节:DOM 和 JavaScript 的关系    第29节:获取和操作 DOM 节点    第30节:DOM 与事件    第31节:DOM 事件绑定    第32节:DOM 事件对象    第33节:DOM 事件流    第34节:事件相关的优化    第35节:自定义事件    第36节:表单校验    第37节:什么是 BOM    第38节:常用的 BOM 相关对象    第39节:BOM 常用属性和方法    第40节:AJAX    第41节:异常处理    第42节:三元运算符    第43节:逗号操作符    第44节:void    第45节:typeof    第46节:delete 操作符    第47节:debugger    第48节:getter & setter    第49节:new 运算符与构造函数    第50节:JavaScript 原型    第51节:JavaScript instanceof    第52节:JavaScript this    第53节:严格模式    第54节:作用域    第55节:闭包    第56节:变量提升    第57节:对象包装器    第58节:Lodash    第59节:moment    第60节:swiper    第61节:ECMAScript 6    第62节:Node.js    第63节:Babel    第64节:CSS 预处理器    第65节:代码规范    第66节:TypeScript    第67节:WebComponents    第68节:Vue、React、Angular    第69节:小程序    第70节:JavaScript 关键字    第71节:分号导致的问题    第72节:对象属性访问问题    第73节:this 使用问题    第74节:浮点数精度问题    第75节:独一无二的 NaN    第76节:避免全局污染    第77节:控制台观察对象问题    第78节:根据环境选择语言特性    第79节:相关资源