ajax的工作原理
更新日期:
Ajax技术说的是把Javascript、Css、Dom和(X)HTML结合起来的一种新用法。这种结合并不是新概念——事实上,DHTML技术早就把这几样技术结合在一起了。Ajax的独到之处在于它在服务器端使用了异步(Asynchronous)处理技术。
1.首先需要创建XMLHttpRequest对象
var request = new XMLHttpRequest();//IE5/6不支持,如何兼容呢?很简单,如下:
var request;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();//支持IE7+,标准浏览器
}else{
request = new ActiveXObject("Microsoft.XMLHTTP");//支持IE5/6
}
2.创建一个http请求
创建XMLHttpRequest对象后,就可以调用open()方法创建一个请求,并准备向服务器发送。
方法说明:
open(method, url, asynchronous, user, password);
参数就明:
Method:指定请求类型,一般为get或者post;
url: 指定请求的地址,可以是绝对地址或者相对地址,可以附带查询字符串;
Asynchronous:(可选)表示请求是同步还是异步,同步请求为false, 异步为true,默认为true;
User:(可选)指定请求的用户名;
Password:(可选) 指定请求密码;
例如:
xmlhttp.open("get","test.php?id=1",true)
3.发送请求
在创建一个请求后,可以使用send()方法向服务器发送这个请求;
方法说明:
send(content);
该方法有一个参数content,它表示要向服务器发送的数据,其格式为查询字符串形式;
如果不发送任何参数可以使用null;
如果open()方法中用post方式提交请求,那么在send之前使用如下语句设置HTTP头:
xmlhttp.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);
4.捕获请求的状态
XMLhttpRequest对象提供了onreadystatechange事件来捕获请求的状态;如下:
ajax.onreadystatechange = function(){
//事件处理
}
5.判断请求状态
onreadystatechange事件是在readyState属性发生改变时触发的,readyState的值表示当前请求的状态,事件处理程序中可以根据这个值来进行不同的处理。
0:表示对象已经建立,但请求未初始化,尚未调用open方法;
1:表示服务器连接已建立,open方法已经调用
2:表示send方法已调用
3:表示请求已发送,正在接收数据
4:表示数据已接受成功
6.判断请求结果
status存储服务器端返回的http请求响应代码,它请求的处理结果:
200:请求成功
202:请求被接收,但处理未完成
400:错误的请求
404:请求资源未找到
500:内部服务器错误
7.获取返回的结果
(1).使用responseText属性可以获取请求页面的纯文本内容。
(2).还可以使用responseXML属性来获取服务器返回的XML文档对象。
使用responseXML属性,服务器返回的必须是一个XML格式的文档,responseXML直接将服务器返回的XML文档转换为对象,这个对象已经完了对XML的解析,可以使用DOM模型规定的方法来对其进行操作。

