XMLHttpRequest对象
XMLHttpRequest对象,依靠它从服务器获取所需的信息,与服务器进行异步通信。
(1)XMLHttpRequest对象的创建
function createXmlHttpRequest()
{
var xmlhttp;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE 5.0版本
}
catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE 5.5版本
}
catch(e){
try{
xmlhttp = new XMLHttpRequest(); //不支持ActiveX空间的浏览器
}
catch(e){}
}
}
return xmlhttp;
}
XMLHttpRequest对象属性
| |
属性
|
描述
|
onreadystatechange | 指定当readyState属性改变时的事件处理句柄 |
readyState | 返回当前请求的状态 |
responseBody | 将回应信息正文以unsigned byte数组形式返回 |
responseStream | 以ADO Stream对象的形式返回响应信息 |
responseText | 将响应信息作为字符串返回 |
responseXML | 将响应信息格式化为XML Document对象并返回 |
status | 返回当前请求的HTTP状态码 |
statusText | 返回当前请求的响应行状态 |
XMLHttpRequest对象方法
| |
方法
|
描述
|
abort | 取消当前请求 |
getAllResponseHeaders | 获取响应的所有HTTP头 |
getResponseHeader | 从响应信息中获取指定的HTTP头 |
open | 创建一个新的HTTP请求,并指定此请求的方法、URL和验证信息(用户名/密码) |
send | 发送请求到HTTP服务器并接收回应 |
setRequestHeader | 单独指定请求的某个HTTP头 |
XMLHttpRequest对象常用的属性和方法说明
1. open方法
open(method,url,asynchronous[,user][,password]);
open方法参数说明
| |
参数
|
描述
|
method | 请求类型,通常为get或post |
url | 请求的URL地址 |
asynchronous | 请求模式,同步(为true,默认)或异步(为false) |
user | 请求的用户名,可省略 |
password | 请求的密码,可省略 |
open方法用于创建请求。URL可以是绝对地址,也可以是相对地址,并可以带有查询字符串。使用post方式,在提交(调用send方法)前应调用setRequestHeader方法设置HTTP头。如果asynchronous为true,即同步模式,该模式下提交请求后一直等待请求完成或超时才执行下一条语句;如果为false,即异步模式,该模式下提交请求后立即执行下一条语句。
2. send方法
send(body);
body参数为向服务器提交的查询字符串,例: var body="user=AjaxUser&id=123";
3. abort方法
例:
//发送请求
xmlhttp.send(null);
//取消上述请求
xmlhttp.abort();
4. onreadystatechange事件
发送请求之后,服务器何时响应请求,响应数据何时接收完毕我们不得而知,因此要使用事件机制捕获请求的状态,onreadystatechange是XMLHttpRequest对象提供的事件。open ,send方法都会触发该事件。
利用onreadystatechange事件处理响应数据是要等数据接收完毕之后,即readyState的值为4时进行,通常处理方法为:
//为XMLHttpRequest对象xmlhttp绑定一上事件处理函数
xmlhttp.onreadystatechange = function(){
//如果readyState为4时说明数据接收完毕
if(xmlhttp.readyState == 4)
{
//请求完毕时的处理代码
}
}
注意该语句要写在调用send方法之前,以便能处理响应数据
readyState属性值说明
| |
readyState值
|
描述
|
0 | readyState初始值,表示XMLHttpRequest已创建 |
1 | open方法已调用 |
2 | send方法已调用 |
3 | 请求发送成功,等待接收数据 |
4 | 数据接收完毕 |
5. status属性
服务器响应结果要依靠status属性来判断。
HTTP状态码说明
| |
HTTP状态码
|
描述
|
200 | 请求响应成功 |
202 | 请求被接收,但处理未完成 |
400 | 错误的请求 |
404 | 请求资源未找到 |
500 | 内部服务器错误 |
//为XMLHttpRequest对象xmlhttp绑定一个事件处理函数
xmlhttp.onreadystatechange = function(){
//如果readyState为4时说明数据接收完毕
if(xmlhttp.readyState == 4)
{
//如果HTTP状态码为200说明请求成功响应
if(xmlhttp.status == 200)
{
//处理服务器成功响应请求的数据
}
else
{
//判断HTTP状态码,给出相应错误提示
}
}
}
6. responseText属性
服务器成功处理请求并返回之后,利用responseText属性接收返回的数据,通常接收纯文本和HTML文档或片段。
7. responseXML属性
用来接收返回的XML文档数据,使用该属性时,服务器端要生成XML格式的数据,还要把响应的content-type设置为text/html.