Ajax全称为Asyncronous Javascripts amd XML(即异步的Javascript 和XML),这是一种无状态刷新技术,可以与服务器交换数据,并且无需重新加载整个网页
Ajax由于是一种无状态刷新技术,所以内容不多,主要是分为两个模块,一个是向服务器发送请求,二是接受服务器发送的数据,当然其实不仅仅是向服务器发送请求,有时候还能够和ASP、PHP等语言结合起来,实现无状态刷新。
一)XMLHttpRequest对象
XMLHttpRequest对象是Ajax的基础,该对象下用于与服务器交互,对象下有一系列的方法来实现数据交互的功能,XMLHttpRequest对象可以用于获取任何类型的数据,而不仅仅只是XML。而创建XMLHttpRequest对象的方法自然就是调用其构造函数,但是有些浏览器却并不支持XMLHttpRequest,因此需要做个兼容,使用window对象去判断XMLHTTPRequest对象是否存在。
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else {
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}
当做完这些时,我们便有了一个XMLHTTPRequest对象,我们可以用这个对象去和服务器进行数据交互。
二)发送请求
当我们需要发送请求时,只需要调用XMLHttpRequest对象下的send方法即可,例如
xmlhttp.send();

但是在发送请求之前,我们必须做好一些配置,比如需要知道这个请求的类型,这个请求的是服务器哪个文件去处理的,使用什么方式发送(同步/异步)等等,而这些都要我们进行配置。
XMLHTTPRequest对象下的open方法便可以进行这些配置,open方法接受三个参数,第一个是规定请求的类型,第二个是文件在服务器的位置,第三个是是否支持异步传输(true为异步,false是同步)
xmlhttp.open(‘GET’,’js/index.js’,true);
因为POST请求是无法直接在地址上显示的,所有信息都在请求头里,所以XMLHTTPRequest对象还给了一个设置请求头的方法setRequestHeader
xmlhttp.setRequestHeader(‘Content-type’,”applicatin/x-www-form-urlencoded”);
三)接受来自服务器的响应
请求已经发出,那么就需要接受来自服务器的响应,并根据响应做出相应的动作,而XMLHttpRequest对象有responseText和responseXML两个属性,用来接收服务器的响应,例如如下代码:

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

四)响应的状态以及处理
在收到服务器响应时,因为发出的时候有可能是异步处理,所以无法判断到底什么时间服务器才能发送响应回来,因此需要监听服务器响应,当服务器响应有状态时便进行响应操作。
XMLHTTPRequest对象下的onreadystatechange事件可以为我们解决该问题,这个函数可以存储函数,而每当readystate属性发生改变时便会调用该函数。
readyState有五个状态,分别是
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪,
而服务器响应也有各种状态,其中主要关注状态为200,这代表着响应是成功的。
Ajax高级内容是与ASP/PHP等后端程序结合,但是其实只是换了请求文件而已,其他的大体上还是没有变化的,因此不做赘述。