Ajax 全称是 asynchronous javascript and xml,并不是新的编程语言,可以说是已有技术的组合,主要用来实现客户端与服务器端的异步通信效果,实现页面的局部刷新,从而创建快速动态网页的技术。
l Ajax过程
- 创建xhrRequest对象,也就是创建一个异步调用对象
- 创建一个新的HTTP请求,并指定其请求的方法、URL及验证信息
- 设置响应 HTTP 请求状态变化的函数
- 发送 HTTP 请求
- 获取异步调用返回的数据
- 使用 JavaScript 和 DOM 实现局部刷新
l 创建xhrRequest 对象
xhrRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
在使用ajax之前 ,首先要通过xhrRequest构造函数创建ajax对象:
创建 xhrRequest 对象的语法:
xhr=new xhrRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
xhr=new ActiveXObject("Microsoft.xhr");
l Ajax向服务器发送请求:
Ajax对象创建完成后,就可以向服务器发送请求,我们使用 xhrRequest 对象的 open() 和 send() 方法:
GET 请求:
xhr.open("GET","show.php?fname=Bill&lname=Gates",true);
xhr.send();
POST 请求:
xhr.open("POST","show.php",true);
xhr.send();
POST 表单请求:
如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
xhr.open("POST","show.php",true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("fname=Bill&lname=Gates");
l 处理务器返回的信息:
Ajax向服务器发送请求后,会等待服务器返回响应信息,然后对响应结果进行处理,下面将对Ajax如何处理服务器返回的信息进行详细分析:
① readyState属性
readyState属性用于获取当前Ajax状态,从 0 到 4有五种形式。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
② onreadystatechange 事件
onreadystatechange 事件用于感知readyState属性状态的改变,每当 readyState 属性改变时,就会调用该函数。下面是一个例子:
③ status属性
status属性用于返回当前请求的http状态码,值为数值类型,如,当请求 成功时,状态码为200;
④ 服务器响应
当请求成功且数据接收完成时,可使用Ajax对象提供的 responseText 或 responseXML 属性得到来自服 务器的响应。如:
document.getElementById("myDiv").innerHTML=xhr.responseText;
【案例】AJAX请求
下面是一个完整的AJAX请求的案例:
<script>
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
}
};
xhr.open('GET', 'show.php');
xhr.send();
</script>