XMLHttpRequest对象

588 阅读2分钟

一、XMLHttpRequest对象的初始化

在不同的浏览器中,初始化方法也是不一样的;

IE浏览器:var http_request = new ActiveXObject("Microsoft.XMLHTTP");  

非IE浏览器:var http_request = new XMLHttpRequest();   实例化为本地的Javascript对象;

为了实现兼容性,可以创建一个跨浏览器的实例化对象

if(window.XMLHttpRequest){
    http_request = new XMLHttpRequest();
}else if(window.ActiveXObject){
    try{
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(e){}
    }
}

二、XMLHttpRequest对象的常用属性

1、指定状态改变时所触发的事件处理器的属性onreadystatechange

http_request.onreadystatechange =getResult;

http_request.onreadystatechange =function(){

getResult("添加的参数");

};

2、获取请求状态的属性readyState

  • 0  未初始化
  • 1 正在加载
  • 2 已加载
  • 3  交互中
  • 4  完成

3、获取服务器的字符串响应的属性responseText

var h = http_request.reponseText;

4、获取服务器的XML响应的属性responseXML

var xmldoc = htttp_request.reponseXML;

5、返回服务器的HTTP状态吗的属性status

  • 100  继续发送请求
  • 200   请求已经成功
  • 202 请求被接受
  • 400  错误的请求
  • 404   文件未找到
  • 408  请求超时
  • 500 内部服务器错误
  • 501  服务器不支持当前请求所需要的某个功能

if(http_request.readyState == 4){
            if(http_request.status == 200){
                alert("请求成功!");
            }else{
                alert("请求未成功!");
            }
        }

三、XMLHttpRequest对象的常用方法

1、创建新请求的方法

语法格式:open("method","URL"[,asyncFlag[,"userName"[,"password"]]])
method:用于指定请求类型,一般为get或post
URL:用于指定请求地址,可以使用绝对地址或者相对地址;并且可以传递查询字符串
asyncFlag:为可选参数,用于指定请求方式,异步请求为true,同步请求为false;默认为true
userName:为可选参数,,用于指定请求用户名,没有时可省略;
password:为可选参数,用于指定请求密码,没有时可省略;

2、向服务器发送请求的方法

语法:send(content)   //content用于指定发送的数据;

http_request.send(null);

3、设置请求的HTTP头的方法;

语法格式:setRequestHeader("header:,"value")   //header:用于指定HTTP头,value:用于为指定的HTTP头设置值。

http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

4、停止或放弃当前异步请求的方法;

语法格式:abort()   http_request.abort();

5、返回HTTP头信息的方法;

语法格式:getResponseHeader("headerLabel")   
http_request.getResponseHeader("Content-Type")    返回值:text/html;charset=GBK

语法格式:getAIIResponseHeaders();
http_request.getAIIResponseHeaders();