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请求要求username和口令,则在bstrUser,bstrPassword中设置.
 
 
Sub send ([varBody])
向server发送一个HTTP请求,并获取返回结果.
varBody为要发送到server的数据,通常在POST方式下使用.
 
Sub setRequestHeader(bstrHeader As String, bstrValue As String)
在请求header中设置bstrHeader/bstrValue值对并发送到server端.
例:

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响应得到的返回原始信息,内容的编码方式决定于请求的server端(UTF-8, UCS-2, UCS-4, Shift_JIS等)

responseText

HTTP请求返回数据体的字符串表示,缺省情况下用utf-8编码后返回,假设返回内容中有中文,server端的数据必须用utf-8编码,否则就会出现乱码。

responseStream

HTTP请求返回数据的流对象,该对象实现IStream接口.

responseXML

返回XML格式的数据对象. server端返回数据为XML格式数据时可用.server端用动态语言生成xml时,必须设置content-type为text/xml,否则client得到的responseXML为空

status

 HTTP返回代码.
200 - 成功
404 - 错误请求
500 - server内部错误,等等. 详见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方法发送数据到webserver
 
<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使用具体解释的更多相关文章

  1. XmlHttp对象

    我是这样理解XmlHttp对象的:xml是一种文档类型Http可以把它看做是浏览器XmlHttp:可以解释为把xml的内容读到浏览器上(网页上),把这句话封装一下,见下XmlHttp是浏览器对象,起的 ...

  2. 2018.7.8 xmlhttp.readyState==4 && xmlhttp.status==200是什么意思

    在做DOM模型的XML实验的时候遇到了问题 代码实例: xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && ...

  3. 原生javascript Ajax

    代码 1. IE5 ,IE6 使用ActiveXObject对象,   其余现代浏览器都支持XMLHttpRequest对象: function ajaxObject(){ var xmlhttp; ...

  4. js注册检测 用户名、密码、手机号、邮箱

    请输入电话号码:<input name="" type="text" id="telphone" value="" ...

  5. 阿贾克斯(AJAX)

    AJAX   :Asynchronous JavaScript and XML 异步的javascript 和xml 优点 : 在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分数据 不需要 ...

  6. Ajax技术基础

    对于AJAX技术,感觉以前虽然用过但是对于AJAX没有一个清晰的认识,今天专门总结一下,希望掌握的更加牢固吧! 一,什么是AJAX? AJAX通常被叫做异步刷新技术,其实他也是可以同步的.主要都用于异 ...

  7. ajax中xmlhttp.readyState和xmlhttp.status的值及解释

    xmlhttp.readyState的值及解释: 0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可 ...

  8. xmlhttp.readyState的值及解释:

    xmlhttp.readyState的值及解释: 0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可 ...

  9. xmlhttp.readyState的值及解释

    xmlhttp.readyState的值及解释: 0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可 ...

随机推荐

  1. Java5 并发学习

    在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过 Executor来启动线程比用Thread的start()更好.在新特征 ...

  2. NLog 传递参数

    用NLog记文件日志,一般都用{$basedir}变量,把日志记在运行的目录或者它的子目录下,遇到要写在其他目录的下,看了下Nlog找到用环境变量传参数. .net 里写 Environment.Se ...

  3. Shell Script Tutorials (0 ~ 62)

    Tutorial-1: Introduction Tutorial-2: Shell, Kernel, Terminal & More Tutorial-3: View System Date ...

  4. POJ 2391 Ombrophobic Bovines ★(Floyd+二分+拆点+最大流)

    [题意]有n块草地,一些奶牛在草地上吃草,草地间有m条路,一些草地上有避雨点,每个避雨点能容纳的奶牛是有限的,给出通过每条路的时间,问最少需要多少时间能让所有奶牛进入一个避雨点. 和POJ2112很类 ...

  5. POI 操作(新接口)

    POI 生成XLS实例 转载至:http://www.4ucode.com/Study/Topic/697242 ackage test; import java.io.FileOutputStrea ...

  6. Hibernate4.x之映射文件

    POJO类和数据库的映射文件*.hbm.xml POJO类和关系数据库之间的映射可以用一个XML文档来定义 通过POJO类的数据库映射文件,Hibernate可以理解持久化类和数据库表之间的对应关系, ...

  7. Android学习系列(22)--App主界面比较

    本文算是一篇漫谈,谈一谈当前几个流行应用的主界面布局,找个经典的布局我们自己也来实现一个.不是为了追求到底有多难,而是为了明白我们确实需要这么做. 走个题,android的UI差异化市场依然很大,依然 ...

  8. Oracle函数面试题

    1.对字符串操作的函数? 答:ASCII() –函数返回字符表达式最左端字符的ASCII 码值 CHR() –函数用于将ASCII 码转换为字符 –如果没有输入0 ~ 255 之间的ASCII 码值C ...

  9. 14、AppWidget及Launcher

    一.Launcher的简单研究 1 什么是Launcher Android系统启动后加载的第一个程序 . 这个程序是其他应用程序的入口 . Launcher构成: HomeScreen : (Work ...

  10. POJ3279 Fliptile 枚举+简单搜索

    题意:一个矩阵,每个点1或0,然后每次翻一个点,它周围上下左右(包括自己)1->0,0->1,问最少翻几次可以矩阵全是0,忽略题目说的字典序 分析:枚举第一行所有的情况,然后下面几行也随之 ...