zoukankan      html  css  js  c++  java
  • XMLHttpRequest 对象

    XMLHttpRequest 对象

    提供客户端同http服务器通讯的协议
    1.下面的代码是在JScript中创建一个XMLHTTP对象并从服务器请求一个XML文档。服务器返回XML文档并显示。
    var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    xmlHttpReq.open("GET", "http://localhost/books.xml", false);
    xmlHttpReq.send();
    alert(xmlHttpReq.responseText);

    在非IE的浏览器中,需要用new XMLHttpRequest()来创建对象,如下:
    var xmlHttpReq = new XMLHttpRequest();
    xmlHttpReq.open("GET", "http://localhost/books.xml", false);
    xmlHttpReq.send();
    alert(xmlHttpReq.responseText);

    备注
    客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft? XML Document Object Model (DOM)处理回应。


    XMLHttpRequest成员

    onreadystatechange*    指定当readyState属性改变时的事件处理句柄。只写
    readyState        返回当前请求的状态,只读.
    responseBody        将回应信息正文以unsigned byte数组形式返回.只读
    responseStream        以Ado Stream对象的形式返回响应信息。只读
    responseText        将响应信息作为字符串返回.只读
    responseXML        将响应信息格式化为Xml Document对象并返回,只读
    status            返回当前请求的http状态码.只读
    statusText        返回当前请求的响应行状态,只读


    XMLHttpRequest方法

    abort            取消当前请求
    getAllResponseHeaders    获取响应的所有http头
    getResponseHeader    从响应信息中获取指定的http头
    open            创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码)
    send            发送请求到http服务器并接收回应
    setRequestHeader    单独指定请求的某个http头




    onreadystatechange 指定当readyState属性改变时的事件处理句柄

    语法:oXMLHttpRequest.onreadystatechange = funcMyHandler;
    如下的例子演示当XMLHTTPRequest对象的readyState属性改变时调用HandleStateChange函数,当数据接收完毕后(readystate == 4)此页面上的一个按钮将被激活
    var xmlhttp=null;
    function PostOrder(xmldoc)
    {
      var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.5.0");
      xmlhttp.Open("POST", "http://myserver/orders/processorder.asp", false);
      xmlhttp.onreadystatechange= HandleStateChange;
      xmlhttp.Send(xmldoc);
      myButton.disabled = true;
    }
    function HandleStateChange()
    {
      if (xmlhttp.readyState == 4)
      {
        myButton.disabled = false;
        alert("Result = " + xmlhttp.responseXML.xml);
      }
    }




    readyState 返回XMLHTTP请求的当前状态

    语法:lValue = oXMLHttpRequest.readyState;

    var XmlHttp;
    XmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    function send() {
       XmlHttp.onreadystatechange = doHttpReadyStateChange;
       XmlHttp.open("GET", "http://localhost/sample.xml", true);
       XmlHttp.send();
    }
    function doHttpReadyStateChange() {
       if (XmlHttp.readyState == 4) {
          alert("Done");
       }
    }

    备注:
    变量,此属性只读,状态用长度为4的整型表示.定义如下:

    0 (未初始化)    对象已建立,但是尚未初始化(尚未调用open方法)
    1 (初始化)    对象已建立,尚未调用send方法
    2 (发送数据)    send方法已调用,但是当前的状态及http头未知
    3 (数据传送中)    已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
    4 (完成)    数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据




    responseBody  返回某一格式的服务器响应数据
    语法: strValue = oXMLHttpRequest.responseBody;

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    xmlhttp.open("GET", "http://localhost/books.xml", false);
    xmlhttp.send();
    alert(xmlhttp.responseBody);




    responseStream 以Ado Stream对象的形式返回响应信息
    语法: strValue = oXMLHttpRequest.responseStream;

    备注:
    变量,此属性只读,以Ado Stream对象的形式返回响应信息。




    responseText 将响应信息作为字符串返回
    语法: strValue = oXMLHttpRequest.responseText;

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    xmlhttp.open("GET", "http://localhost/books.xml", false);
    xmlhttp.send();
    alert(xmlhttp.responseText)

    备注:
    变量,此属性只读,将响应信息作为字符串返回。
    XMLHTTP尝试将响应信息解码为Unicode字符串,XMLHTTP默认将响应数据的编码定为UTF-8,如果服务器返回的数据带BOM(byte-order mark),XMLHTTP可以解码任何UCS-2 (big or little endian)或者UCS-4 数据。注意,如果服务器返回的是xml文档,此属性并不处理xml文档中的编码声明。你需要使用responseXML来处理。





    responseXML 将响应信息格式化为Xml Document对象并返回
    语法: var objDispatch = oXMLHttpRequest.responseXML;

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    xmlhttp.open("GET", "http://localhost/books.xml", false);
    xmlhttp.send();
    alert(xmlhttp.responseXML.xml);

    备注:
    变量,此属性只读,将响应信息格式化为Xml Document对象并返回。如果响应数据不是有效的XML文档,此属性本身不返回XMLDOMParseError,可以通过处理过的DOMDocument对象获取错误信息。




    status 返回当前请求的http状态码
    语法: lValue = oXMLHttpRequest.status;

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    xmlhttp.open("GET", "http://localhost/books.xml", false);
    xmlhttp.send();
    alert(xmlhttp.status);




    statusText 返回当前请求的响应行状态
    语法:strValue = oXMLHttpRequest.statusText;

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    xmlhttp.open("GET", "http://localhost/books.xml", false);
    xmlhttp.send();
    alert(xmlhttp.statusText);

    备注:
    字符串,此属性只读,以BSTR返回当前请求的响应行状态,此属性仅当数据发送并接收完毕后才可获取。




    getAllResponseHeaders 获取响应的所有http头
    语法: strValue = oXMLHttpRequest.getAllResponseHeaders();

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    xmlhttp.open("GET", "http://localhost/sample.xml", false);
    xmlhttp.send();
    alert(xmlhttp.getAllResponseHeaders());

    输出由web服务器返回的http头信息,example:
    Server:Microsoft-IIS/5.1
    X-Powered-By:ASP.NET
    Date:Sat, 07 Jun 2003 23:23:06 GMT
    Content-Type:text/xml
    Accept-Ranges:bytes
    Last Modified:Sat, 06 Jun 2003 17:19:04 GMT
    ETag:"a0e2eeba4f2cc31:97f"
    Content-Length:9

    备注:
    每个http头名称和值用冒号分割,并以 结束。当send方法完成后才可调用该方法。





    getResponseHeader 从响应信息中获取指定的http头
    语法: strValue = oXMLHttpRequest.getResponseHeader(bstrHeader);

    var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    xmlhttp.open("GET", "http://localhost/sample.xml", false);
    xmlhttp.send();
    alert(xmlhttp.getResponseHeader("Server"));
    输出http头中的server列:当前web服务器的版本及名称。



    open  创建一个新的http请求,并指定此请求的方法、URL以及验证信息
    语法: oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);

    参数

    bstrMethod
    http方法,例如:POST、GET、PUT及PROPFIND。大小写不敏感。

    bstrUrl
    请求的URL地址,可以为绝对地址也可以为相对地址。

    varAsync[可选]
    布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。

    bstrUser[可选]
    如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。

    bstrPassword[可选]
    验证信息中的密码部分,如果用户名为空,则此值将被忽略。

    下面的例子演示从服务器请求book.xml,并显示其中的book字段。
    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    xmlhttp.open("GET","http://localhost/books.xml", false);
    xmlhttp.send();
    var book = xmlhttp.responseXML.selectSingleNode("//book[@id='bk101']");
    alert(book.xml);



    send 发送请求到http服务器并接收回应
    语法: oXMLHttpRequest.send(varBody);

    参数

    varBody
    欲通过此请求发送的数据。

    Example

    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    xmlhttp.open("GET", "http://localhost/sample.xml", false);
    xmlhttp.send();
    alert(xmlhttp.responseXML.xml);

    备注:
    此方法的同步或异步方式取决于open方法中的bAsync参数,如果bAsync == False,此方法将会等待请求完成或者超时时才会返回,如果bAsync == True,此方法将立即返回。
    如果发送的数据为BSTR,则回应被编码为utf-8, 必须在适当位置设置一个包含charset的文档类型头。
    如果发送的数据为XML DOM object,则回应将被编码为在xml文档中声明的编码,如果在xml文档中没有声明编码,则使用默认的UTF-8。



    setRequestHeader 单独指定请求的某个http头
    语法: oXMLHttpRequest.setRequestHeader(bstrHeader, bstrValue);

    参数

    bstrHeader
    字符串,头名称。

    bstrValue
    字符串,值。
    备注

    如果已经存在已此名称命名的http头,则覆盖之。此方法必须在open方法后调用。








  • 相关阅读:
    武功秘籍 蓝桥杯
    切面条 蓝桥杯
    啤酒和饮料 蓝桥杯
    蚂蚁感冒 蓝桥杯
    hdu N!
    hdu 神、上帝以及老天爷
    ListView滑动删除 ,仿腾讯QQ
    C++ 习题 输出日期时间--友元函数
    C++习题 商品销售
    渠道运营一点事
  • 原文地址:https://www.cnblogs.com/opop/p/5445266.html
Copyright © 2011-2022 走看看