zoukankan      html  css  js  c++  java
  • 使用XMLHTTP Request Object获取服务器数据

    使用XMLHTTP Request Object获取服务器数据

    在Web客户端使用xmlhttp对象,可以十分方便的和服务器交换数据。xmlhttp技术同时也是目前大多数无刷新页面使用的和服务器交换数据的方式,这种方式比以往的隐藏iframe的方法要方便和经济的多。


    同时让我们高兴得是xmlhttp并不是IE特有的东西,虽然目前还不是W3C的标准,不过IE, Netscape/Mozilla, 和Safari都支持。在IE中我们使用new ActiveXObject('MSXML2.XMLHTTP')或者new ActiveXObject("Microsoft.XMLHTTP")来获得xmlhttp对象实例,使用前者还是后者和客户端机器安装的MSXML版本有关。在Netscape/Mozilla和Safari中,使用new XMLHttpRequest()来获得xmlhttp对象实例。

    例如在IE中,我们通常这样使用:
    var xmlhttp = null; 
    try 

        xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); 

    catch(e) 

        try 
        { 
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        catch(e2){} 



    使用xmlhttp对象其实并不是什么困难的事,它一共就6个方法8个属性。不过它最主要的是提供了两种执行模式:同步模式和异步模式。同步模式可以比较精确的控制程序流程,可是如果服务器的Response太慢,browser会有死掉、失去响应的问题;而使用异步模式由于是事件触发方式控制流程,会给程序运行带来一些不可预计的问题,因为你不知道客户端等待服务器Response的过程中,用户会在browser里做什么操作。 

    XMLHTTP对象的属性和方法列表(来自IXMLHTTPRequest接口):
    Name  Type  Description 
    onreadystatechange  N/A 指定当就绪状态发生改变时调用的事件处理函数,仅用于异步操作  
    readyState  Long 异步操作的状态:未初始化(0),正在加载(1),已加载(2),交互(3),已完成(4)
    responseBody  Variant 将响应信息正文作为unsigned byte数组返回
    responseStream  Variant 将响应信息正文作为一个ADO Stream对象返回
    responseText  String 将响应信息正文作为一个文本字符串返回
    responseXML  Object 通过XMLDom将响应信息正文解析为XMLDocument对象
    status  Long 服务器返回的HTTP状态码
    statusText  String 服务器HTTP响应行状态
     
    Name  Desciption 
    abort 取消当前 HTTP 请求
    getAllResponseHeaders 从响应信息中检索所有的标头字段
    getResponseHeader 从响应信息正文中获得一个 HTTP 标头值
    open(method, url, boolAsync, bstrUser, bstrPassword) 打开一个与 HTTP 服务器的连接
    send(varBody) 设定一个请求的标头字段
    setRequestHeader(bstrHeader, bstrValue) 向 HTTP 服务器发送请求。可包含正文。

    这里面显然就open方法比较麻烦,带了一大堆参数,它们的含义分别是:
    Parameter  Description 
    method HTTP的通信方式,比如GET, HEAD, POST, PUT, DELETE, CONNECT等
    url 接收数据的服务器的URL地址,URL可带QueryString
    boolAsync 一个布尔标识,说明请求是否为异步的。如果是异步通信方式,客户端就不等待服务器的响应;如果是同步方式,客户机会等到服务器返回消息后才去执行其它操作
    bstrUser 用户ID,用于服务器身份验证
    bstrPassword 用户密码,用于服务器身份验证



    下面是一个同步方式获取服务器数据的简单示例:
    function GetRemoteData(url)
    {
        var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        try
        {  
             xmlhttp.open('GET', url, false);
             if ( xmlhttp.status == 200 )
             {
                 return xmlhttp.responseText;
             }
             throw ''; 
        }
        catch(e)
        {
             return '';
        }
    }

    异步通讯的示例:
    xmlhttp.open("GET", "default.aspx", true);
    xmlhttp.onreadystatechange = function()
    {
        if ( xmlhttp.readyState==4 )
        {
            alert(xmlhttp.responseText);
        }
    }
    xmlhttp.send(null);

  • 相关阅读:
    DCR挖矿成本¥355.92,市价¥346.24——五大币种挖矿成本分析 2018-08-7
    智者见智——区块链3.0与未来
    梭哈10万入场,拿住不放,3年后收益过十亿,币圈传奇—大空翼
    从路人甲到叱咤币圈的神话:“打死也不卖币”的宝二爷
    小白眼里的区块链和币圈 —— 持币待涨的故事
    区块链如何赋能网络互助行业?来自众托帮+区块链的应用、车车助+纷享车链AutoChain应用
    中国青年网记者-阿里巴巴王坚:互联网已成为世界发展的基础设施
    读者咩叭:畅谈经济未来
    中青网财经:请一位心理学博士当CTO 只有马云敢这么做
    云科技时代:阿里云创造者写了《在线》,这是一本怎样的书?
  • 原文地址:https://www.cnblogs.com/xiaodi/p/131422.html
Copyright © 2011-2022 走看看