Ajax的很重要的一个技术(或者称之为一个对象)就是XMLHttpRequest对象.通过该对象实现了对服务器的异步访问,同时改善了用户体验.
7.0版本的IE已经把XMLHttpRequest作为window对象的一个属性使用了.
下面重点看以下该对象的一些重要的方法和属性:
先看属性:
(1)onreadystatechange:设置或响应异步请求的所有事件,往往将一个javascript的回调函数对其赋值.
(2)readyState:接收请求操作的当前状态。0:未初始化;1:准备请求;2:请求中;3:接收响应;4:完成(请求并接收响应完成)
(3)responseBody:以字节数组的形式返回响应内容
(4)responseText:以字符串的形式返回响应内容
(5)responseXml:以DOM形式返回响应内容
(6)status:接收HTTP响应的状态码。
以下是从MSDN上找的所有的状态码,其中比较常用的我已经用红色标注
100 |
Continue |
101 |
Switching protocols |
200 |
OK |
201 |
Created |
202 |
Accepted |
203 |
Non-Authoritative Information |
204 |
No Content |
205 |
Reset Content |
206 |
Partial Content |
300 |
Multiple Choices |
301 |
Moved Permanently |
302 |
Found |
303 |
See Other |
304 |
Not Modified |
305 |
Use Proxy |
307 |
Temporary Redirect |
400 |
Bad Request |
401 |
Unauthorized |
402 |
Payment Required |
403 |
Forbidden |
404 |
Not Found |
405 |
Method Not Allowed |
406 |
Not Acceptable |
407 |
Proxy Authentication Required |
408 |
Request Timeout |
409 |
Conflict |
410 |
Gone |
411 |
Length Required |
412 |
Precondition Failed |
413 |
Request Entity Too Large |
414 |
Request-URI Too Long |
415 |
Unsupported Media Type |
416 |
Requested Range Not Suitable |
417 |
Expectation Failed |
500 |
Internal Server Error |
501 |
Not Implemented |
502 |
Bad Gateway |
503 |
Service Unavailable |
504 |
Gateway Timeout |
505 |
HTTP Version Not Supported |
(7)statusText:接收HTTP友好的状态提示
再看方法:
(1)abort():取消当前的请求。
(2)getAllResponseHeader():返回完整的响应的头列表内容
(3)gerResponseHeader():返回特定的响应头内容
(4)open():定义了当前请求的方法(GET.POST.PUT),目标URL和是否异步请求以及请求使用的用户信息等。
(5)send():发送请求
(6)setRequestHeader():自定义请求头部内容
再来看看XMLHttpRequest和服务器交互的步骤:
(1)首先在使用该对象之前,要先初始化:对于IE7之前的版本:
var oReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");
当然可以用传统的方法:
function createXmlHttp()
{
if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();//mozilla浏览器
}
else if(window.ActiveXObject)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");//IE旧版本
}
catch(e)
{
}
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//IE新版本
}
catch(e)
{
}
if(!xmlHttp)
{
window.alert("不能创建XMLHTTPREQUEST对象!");
return false;
}
}
}
(2)初始化完成之后,要指定请求事件发生后客户端要响应的回传方法(往往是javascript方法)
xmlHttp.onreadystatechange=function;
(3)定义请求:
xmlHttpRequestobject.open("访问方法”,目标地址(绝对或相对路径都可以),异步与否(一般为true))
(4)向服务器发送请求:
xmlhttpRequestObject.send(请求时传递到服务器的内容(可选,如果有,在open方法中访问方法参数一定是post),如果没有为null )
这只是XMLHttpRequest的简单的介绍,关于ajax的另外一些技术,如有高见,请留言交流。