XMLHTTP使用详解

原创 2016年06月01日 15:14:06
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");
 
        var web = "http://www.google.com";
 
        //异步方式
        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";
                    var web = "http://www.myweb.com/login.jsp"    //实际运行要换为存在的一个地址
                    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中访问的是另外的域,浏览器通常会禁止这种操作,要跨域访问需修改安全配置。
 
 
参考文档:
 
1 - http://msdn.microsoft.com  中MSXML SDK
 
 
版权声明:本文为博主原创文章,未经博主允许欢迎转载。

XMLHTTP使用详解

XMLHTTP使用详解 分类: xmlhttp2013-07-31 13:02 64人阅读 评论(0) 收藏 编辑 删除 JavaScriptWebxmlhttp XMLHTTP对象是Micro...
  • u013605178
  • u013605178
  • 2014年04月11日 15:20
  • 740

编码不一致 (936到utf-8) 发送xmlhttp 到url后中文乱码

function GetHtml(sUrl,sUrl01){  var xmlRequest;  xmlRequest = new ActiveXObject("MSXML2.ServerXMLHTT...
  • smeyou
  • smeyou
  • 2011年06月20日 11:23
  • 1195

终于明白m$为什么要对xmlhttp和xmldom做那么多个版本的升级了

为了支持304response,测试了 MSXML2.XMLHTTP.5.0,MSXML2.XMLHTTP.3.0,MSXML2.XMLHTT,Microsoft.XMLHTTP,MSXML2.DOM...
  • emu
  • emu
  • 2007年06月04日 20:24
  • 3892

asp xmlHttp用法举例

一般来说,我们做网站,数据都是在我们自己的数据库中的,但有些数据,我们不想也不能自己去收集数据,比如新闻\天气预报,(我们无法天天更新),所以我们就需要借助别人的网站来显示这些内容 。但如果直接链接到...
  • chinaPhoneLab
  • chinaPhoneLab
  • 2007年03月15日 17:28
  • 5562

xmlHttp用法

xmlHttpRequest的status的值的含义 虽然常写ajax方面的东西,但是很少去专门了解xmlHttpRequest的status各个值的含义,只是在用到时Google一下,下面将他人已...
  • lwy7758
  • lwy7758
  • 2012年05月30日 20:46
  • 2945

XMLHTTP详解

XMLHTTP对象及其方法------------------MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。 创建XMLHTTP对象...
  • nopole
  • nopole
  • 2008年07月23日 09:23
  • 271

XMLHTTP对象及其方法 (zz)

MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。 创建XMLHTTP对象的语句如下: Set objXML = CreateObjec...
  • hattah
  • hattah
  • 2006年11月11日 14:29
  • 855

XMLHttpRequest用法介绍

传统的Web应用请求服务器返回的一般是是完整的HTML页面,这样往往就需要页面进行刷新操作,不仅耗时而且用户体验度也不好。最典型的代表就是form表单登录操作了。如果登录失败往往是跳转到原网页重新登陆...
  • linzhiqiang0316
  • linzhiqiang0316
  • 2016年08月26日 11:59
  • 3897

在VB中用XMLHTTP获取网页Html文本

Public Function GetCode(CodeBase, Url) 第一个参数是设置编码方式(GB2312或UTF-8)第二个参数是地址.    Dim xmlHTTP1    Set xm...
  • guolibin
  • guolibin
  • 2008年05月06日 17:42
  • 1835

用xmlhttp将html的数据打包成multipart/form-data格式,实现异步上传文件功能

阅读本文之前,可以先阅读RFC1867 Form Based File Upload in HTML协议。1.不知道为什么,在局域网,有些电脑上含有的表单提交时很快,但有些很慢。服务器端使用过多种文件...
  • cm4ever
  • cm4ever
  • 2006年01月07日 00:56
  • 6413
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XMLHTTP使用详解
举报原因:
原因补充:

(最多只允许输入30个字)