XMLHttpRequest对象

一、创建XMLHttpRequest

//适用于 IE7 之前的版本
function createXHR(){
if (typeof arguments.callee.activeXString != "string"){
var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp"],
i, len;
for (i=0,len=versions.length; i < len; i++){
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex){
//跳过
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}

//IE7及其更高版本
function createXHR(){
if (typeof XMLHttpRequest != "undefined"){
return new XMLHttpRequest();
} else if (typeof ActiveXObject != "undefined"){
if (typeof arguments.callee.activeXString != "string"){
var versions = [ "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp"],
i, len;
for (i=0,len=versions.length; i < len; i++){
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex){
//跳过
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
} else {
throw new Error("No XHR object available.");
}
}

二、XHR的使用

  1. open()
xhr.open("get", "example.php", false);//调用 open()方法并不会真正发送请求,而只是启动一个请求以备发送。
xhr.send(null); //当有参数是传所需的参数,没有时为null。必须填写参数
  1. onreadystatechange ()
    创建XHR实例后,会存在一个状态。可以通过onreadystatechange()接收格式活动阶段的数据。这个方法应该写在open()方法的前面。
xhr.onreadystatechange = function(){
     if (xhr.readyState == 4){
       if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){
            alert(xhr.responseText);
             } else {
             alert("Request was unsuccessful: " + xhr.status);
             }
         }
     };
/**
readyState函数的值:
 0:未初始化。尚未调用 open()方法。
 1:启动。已经调用 open()方法,但尚未调用 send()方法。
2:发送。已经调用 send()方法,但尚未接收到响应。
 3:接收。已经接收到部分响应数据。
4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了
**/

3.HTTP头部信息

xhr.setRequestHeader("MyHeader", "MyValue");//设置请求头(必须在调用 open()方法之后且调用 send()方法
之前)
var myHeader = xhr.getResponseHeader("MyHeader"); //获取相对应的响应头数据
var allHeaders = xhr.getAllResponseHeaders();//获取所有响应头数据

三、FormData

var data = new FormData();
data.append("name", "Nicholas");

四、进度事件

  1. loadstart:在接收到响应数据的第一个字节时触发。
  2. progress:在接收响应期间持续不断地触发。
    3.error:在请求发生错误时触发。
  3. abort:在因为调用 abort()方法而终止连接时触发。
  4. load:在接收到完整的响应数据时触发。
  5. loadend:在通信完成或者触发 error、 abort 或 load 事件后触发。

你可能感兴趣的:(XMLHttpRequest对象)