# ajax简介
AJAX 即 “Asynchronous JavaScript and XML”(异步的 JavaScript 与 XML 技术),指的是一套综合了多项技术的浏览器端网页开发技术。AJAX 的概念由 Jesse James Garrett 所提出,说白了**就可以使用 JavaScript 代码发送网络请求并处理响应,由浏览器实现**。
传统的 Web 应用允许用户端填写表单(form),当提交表单时就向网页服务器发送一个请求。服务器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分 HTML 码往往是相同的。由于每次应用的沟通都需要向服务器发送请求,应用的回应时间依赖于服务器的回应时间。这导致了用户界面的回应比本机应用慢得多。
与此不同,AJAX 应用可以仅向服务器发送并取回必须的数据,并在客户端采用 JavaScript 处理来自服务器的回应。因为在服务器和浏览器之间交换的数据大量减少,服务器回应更快了。同时,很多的处理工作可以在发出请求的客户端机器上完成,因此 Web 服务器的负荷也减少了。
# AJAX 为什么要使用它, 它的特点, 本质是什么
提供网络传输效率, 减轻服务器压力, 增加用户体验性
异步局部刷新
使用 JS 代码发送请求并处理响应, 运行浏览器环境下
验证用户是否存在, 发送短信验证码等等
# 使用 AJAX 发送请求
## 代码步骤
* 创建 AJAX 对象;
* 设置请求路径,请求方式等;
* 绑定监听状态改变的处理函数,在处理函数可获取响应数据;
* 发送请求。
## 兼容性问题
~~~
function createAjax() {
var ajax;
try { // 非 IE
ajax = new XMLHttpRequest();
}
catch (e) { // IE
ajax = new ActiveXObject('Microsoft.XMLHTTP');
}
return ajax;
}
~~~
## 响应处理
响应处理,即对服务响应回浏览器的数据根据状态码和 AJAX 对象的状态信息进行不同的处理,在绑定状态改变的处理函数中写对应的逻辑代码即可。
AJAX 对象有 4 个属性:
* readyState 总共有 5 个状态值,分别为 0 ~ 4,每个值代表了不同的含义:
* 0:初始化,AJAX 对象还没有完成初始化
* 1:载入,AJAX 对象开始发送请求
* 2:载入完成,AJAX 对象的请求发送完成
* 3:解析,AJAX 对象开始读取服务器的响应
* 4:完成,AJAX 对象读取服务器响应结束
* status 表示响应的 HTTP 状态码,常见状态码如下:
* 200:成功
* 302:重定向
* 404:找不到资源
* 500:服务端错误
* responseText 获得字符串形式的响应数据。
* responseXML 获得 XML 形式的响应数据。
综合以上,在状态改变的处理函数一般针对 readyState == 4 且 status == 200 的情况才处理,再根据后台返回的数据类型决定从 responseText 或者 responseXML 获取服务器响应回去来的数据。