XMLHTTP对象是Microsoft的MSXML开发包中带的一个用HTTP,XML协议访问web资源的对象. 从MSXML3.0开始出现. 它在AJAX技术中主要用来从其他网络资源获取信息,然后由javascript来更新页面中的部分内容.
 采用这种方法将页面可更新内容细化,不需要更新很少的内容而刷新整个页面. 
  
 XMLHTTP对象的使用方法如下:
 1- 创建XMLHTTP对象,不同的浏览器创建方式不同,本文以IE为例说明. 
 2- 用XMLHTTP对象向外部资源发送请求信息, 同步或异步获得返回结果
 3- 处理返回结果,在页面上显示,这时要用到javascript相关技术
  
 XMLHTTP对象的方法如下: (函数原型采用VB语法)
  
 Sub abort() 
 
  中断当前对象的HTTP请求.
 
  
 Function getAllResponseHeaders() As String
 获取HTTP响应结果中的全部Header信息,以字符串格式表示
  
 Function getResponseHeader(bstrHeader As String) As String
  
 
  获取HTTP响应结果Header中指定名称的值,用字符串表示,如果不存在则返回空串
 
 
   
 
 Sub open(bstrMethod As String, bstrUrl As String, [varAsync], [bstrUser], [bstrPassword])
 
  初始化HTTP连接请求对象,设置请求方法,地址,认证信息.
 
 
  bstrMethod可用值有GET,POST,HEAD,定义向HTTP提交请求的方式;必填
 
 
  bstrUrl为要访问的HTTP资源地址;必填
 
 
  varAsync 可选项,设置是异步还是同步等待返回结果,true-异步方式,false-同步方式,缺省是异步方式;
 
 
  如果HTTP请求要求用户名和口令,则在bstrUser,bstrPassword中设置.
 
 
   
 
 
   
 
 Sub send ([varBody])
 
 
  向服务器发送一个HTTP请求,并获取返回结果.
 
 
  varBody为要发送到服务器的数据,通常在POST方式下使用.
 
 
   
 
 Sub setRequestHeader(bstrHeader As String, bstrValue As String)
 
 
  在请求header中设置bstrHeader/bstrValue值对并发送到服务器端.
 
 
  例: 
  
xmlReq.setRequestHeader("Content-Type", 
  "application/x-www-form-urlencoded; charset=UTF-8"); 
  
 
   
 
  
 XMLHTTP属性
 
onreadystatechange
  
 
   设置请求对象状态readystate改变时要调用的函数对象;
 
 
   
 
readyState
 
 请求对象的状态值,含义如下:
 0 - 请求对象被创建,但未初始化,即open方法未调用
 1 - 装载中,open方法已调用,send方法未调用
 2 - 已装载,send方法已调用,但还未获得Header信息
 3 - 交互中,已获取了部分信息,这时调用responseText将得到不完整信息,会返回错误
 4 - 所有数据已接收完成,可用responseText或responseBody得到完整数据
  
 responseBody
 
 表示从HTTP响应得到的返回原始信息,内容的编码方式决定于请求的服务器端(UTF-8, UCS-2, UCS-4, Shift_JIS等)
  
responseText
 
  HTTP请求返回数据体的字符串表示,缺省情况下用utf-8编码后返回,如果返回内容中有中文,服务器端的数据必须用utf-8编码,否则就会出现乱码。
  
responseStream
 
 HTTP请求返回数据的流对象,该对象实现IStream接口.
  
responseXML
 
 返回XML格式的数据对象. 服务器端返回数据为XML格式数据时可用.服务器端用动态语言生成xml时,必须设置content-type为text/xml,否则客户端得到的responseXML为空
  
status
 
   HTTP返回代码. 
 
 
  200 - 成功
 
 
  404 - 错误请求
 
 
  500 - 服务器内部错误,等等. 详见HTTP协议.
 
 
   
 
 statusText
 
  HTTP返回状态文本描述.
 
 
   
 
 上面说明了XMLHTTP的方法和属性,下面列一些使用实例.
  
  
  例1  连接到google,显示获得的信息
  
  
 <script language="javascript">
  
  
 function getGoogle(){
     var xmlReq ;
     try{
         xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
  
  
         //异步方式
         xmlReq.open("GET",web,true);
         xmlReq.onreadystatechange = function(){
               if (xmlReq.readystate == 4){
                       document.write(xmlReq.responseText);
               }
  
         }
  
         xmlReq.send();
  
     catch(e){
         
          alert(e);
     }
     
 }
  
 </script>
  
  
  例2 用POST方法发送数据到web服务器
  
 <script language="javascript" >
     var xmlReq ;
     function sendData(){
          
           try{
  
                     xmlReq = new ActiveXObject("MSXML2.XMLHTTP");
                     var data = "name=james&id=1234";
                     xmlReq.open("POST",web,true);
                     xmlReq.onreadystatechange = resHandler;         //设置返回值处理函数
                     xmlReq.setRequestHeader("Content-Type"," 
 
           xmlReq.setRequestHeader("Content-Type", 
 "application/x-www-form-urlencoded; charset=UTF-8");
 
                     xmlReq.send(data);
  
           } catch(e) {
                alert(e);
           }
  
     }
  
  
     function ResHandler(){
            if (xmlReq.readystate == 4){
                  
                   alert(xmlReq.responseText);
  
            }
     }
  
  
 </script>
  
  
 在Mozilla浏览器中要用xmlReq = new XMLHttpRequest()来创建HTTP请求对象. 其他使用方法与MSXML相同。基于安全问题,如果open中访问的是另外的域,浏览器通常会禁止这种操作,要跨域访问需修改安全配置。
  
  
 参考文档: