zoukankan      html  css  js  c++  java
  • XMLHTTP与XMLDOC使用介绍(上)

      XMLHTTP是 javascript客户端向服务器发送请求的一个Activex组件,在很多ajax框架都继承了这种思想,不过ajax是异步的,但是XMLHTTP也可用于异步请求,下面主要介绍XMLHTTP的一些常用方法。

      1: Open方法

      它的定义为:

      xmlHttp.Open("HTTP提交方式" , "请求的URL" , "是否为异步" , "用户名' , "密码")

       包含了5个参数,前三个是必要的,
       后两个是可选的(在服务器需要进行身份验证时提供)。
       参数的含义如下所示:
       http-method: HTTP的通信方式,比如GET或是 POST
       url: 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序
       async: 一个布尔标识,说明请求是否为异步的。
              如果是异步通信方式(true),客户机就不等待服务器的响应;
              如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
       userID 用户ID,用于服务器身份验证

       password 用户密码,用于服务器身份验证

      使用方法如:

      var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP") ;

      xmlHttp.open("GET","http://pengxiaojun.cnblogs.com",true,"","") ;

    用Open方法对Request对象进行初始化后,调用Send方法发送数据

    2: Send方法
        参数类型是Variant,可以是字符串、DOM树或任意数据流。
        发送数据的方式分为同步和异步两种。
        在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;
        而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。

    XMLHTTP对象中的readyState属性
        能够反映出服务器在处理请求时的进展状况。
        客户机的程序可以根据这个状态信息设置相应的事件处理方法。
        值 说明
        0   Response对象已经创建,但XML文档上载过程尚未结束
        1   XML文档已经装载完毕
        2   XML文档已经装载完毕,正在处理中
        3   部分XML文档已经解析
        4   文档已经解析完毕,客户端可以接受返回消息

    客户机接收响应是通过XMLHTTP对象的属性实现
        responseText:将返回消息作为文本字符串;
        responseBody:将返回消息作为HTML文档内容;
        responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
        responseStream:将返回消息视为Stream对象

      下面我收集了XMLDOC对象的成员:

    Document 对象属性

      以下所列是可用的document对象属性以及使用方法

       async 属性
    ------------------
    async 属性表示是否允许异步的下载。

    基本语法:
    boolvalue = XMLdocument.async;
    XMLdocument.async = boolvalue;
    说明:布尔值是可擦写的(read/write),如果准许异步下载,值为True;反之则为False。
    使用范例:
    xmlDoc.async = "false";
    alert(xmlDoc.async);

    attribute 属性
    -------------------
    传回目前节点的属性列表。

    基本语法:
    objAttributeList = xmlNode.attributes;
    说明:传回一个物件。如果此节点不能包含属性,则传回空值。
    使用范例:
    objAttList = xmlDoc.document.lement.attributes;
    alert(objAttList);
    ------------------------------------------------------------------------------
    [Note]
    例子以[object]为结果传回。
    这是由于被传回的对象,若不使用其它的对象属性,就不能以文字来表示,
    在本附录中包含数个这样的例子。尽管很多对象属性本身似乎不是很有用,
    但您将会在附录中看到如何组合属性和方法得到您要的结果。
    ------------------------------------------------------------------------------


    childNodes 属性
    -----------------
    传回一个节点清单,包含该节点所有可用的子节点。

    基本语法:
    objNodeList=node.childNodes;
    说明:传回一个物件。假如这节点没有子节点,传回null。
    使用范例:
    objNodeList = xmlDoc.childNodes;
    alert(objNodeList);


    doctype 属性
    -----------------
    传回文件型态节点,包含目前文件的DTD。
    这节点是一般的文件型态宣告,
    例如,节点<!DOCTYPE EMAIL SYSTEM "LstA_2.dtd">,
    名为EMAIL 的节点物件会被传回。

    基本语法:
    objDocType=xmldocument.doctype;
    说明:传回一个对象,这个属性是只读的。假如这文件不包含DTD,会传回null。
    使用范例:
    objDocType = xmlDoc.doctype;
    alert(objDocType.nodeName);
    document.lement 属性


    确认XML 文件的根(Root)节点。
    ----------------------------
    基本语法:
    objDoc=xmldocumentdocument.element;
    说明:回一个在单一根文件元素中包含数据的对象。
    此属性可读/写,如果文件中不包含根节点,将传回null。


    使用范例:
    objDocRoot = xmlDoc.document.element;
    alert(objDocRoot);


    firstChild 属性
    -----------------
    确认在目前节点中的第一个子元素。

    基本语法:
    objFirstChild = xmlDocNode.firstChild;
    说明:此属性只读且会传回一对象,如果节点中没有包含第一个子元素,将传回null。
    使用范例:
    objFirstChild = xmlDoc.document.lement.firstChild;
    alert(objFirstChild);


    implementation 属性
    ---------------------
    DOM 应用程序能使用其它实作中的对象。
    implementation 属性确认目前XML 文件的DOMimplementation 对象

    基本语法:
    objImplementation = xmldocument.implementation;
    说明:此属性只读且传回一个对象。
    使用范例:
    objImp = xmlDoc.implementation;
    alert(objImp);

    lastChild 属性
    ---------------
    确认目前节点中最后的子元素。

    基本语法:
    objLastChild = xmlDocNode.lastChild;
    说明:此属性只读且传回一个对象。如果节点中没有包含最后子元素,将传回null。
    使用范例:
    objLastChild = xmlDoc.document.lement.lastChild;
    alert(objLastChild);

    nextSibling 属性
    ------------------
    在目前文件节点的子节点列表中传回下一个兄弟节点。

    基本语法:
    objNextSibling = xmlDocNode.nextSibling;
    说明:此属性是只读且传回一个对象。如果节点中没有包含其它的相关节点,会传回null。
    使用范例:
    objSibling = xmlDoc.document.lement.childNodes.item(1).nextSibling;
    alert(objSibling);

    nodeName 属性
    ---------------
    传回代表目前节点名称的字符串。

    基本语法:
    strNodeName = xmlDocNode.nodeName ;
    说明:传回一个字符串。这个属性是只读的,传回元素名称、属性或实体参照。
    使用范例:
    strNodeName = xmlDoc.document.lement.nodeName;
    alert(strNodeName);

    nodeType 属性
    ---------------
    辨识节点的DOM 型态。

    基本语法:
    numNodeType = xmlDocNode.nodeType;
    说明:此属性只读且传回一个数值。

    有效的数值符合以下的型别:
    1-ELEMENT
    2-ATTRIBUTE
    3-TEXT
    4-CDATA
    5-ENTITY REFERENCE
    6-ENTITY
    7-PI (processing instruction)
    8-COMMENT
    9-document.
    10-document.nbsp;TYPE
    11-document.nbsp;FRAGMENT
    12-NOTATION
    -------------------------------
    使用范例:
    numNodeType = xmlDoc.document.lement.nodeType;
    alert(numNodeType);

    nodevalue 属性
    -----------------
    传回指定节点相关的文字。
    这并非一个元素中数据的值,而是与一个节点相关且未解析的文字,
    就像一个属性或者一个处理指令。

    基本语法:
    varNodevalue = xmlDocNode.nodevalue;
    说明:传回的文字代表以节点的nodeType 属性为主的型态值。
    (请参考附录中的nodeType 属性。)
    因为节点型态可能是几种数据型态中的一种,传回值也因此有差异。
    传回null 的节点型态有:
    document.ELEMENT、document.TYPE、document.FRAGMENT、
    ENTITY、ENTITY REFERENCE,和NOTATION。
    此属性可擦写。
    使用范例:
    varNodevalue = xmlDoc.document.lement.nodevalue;
    alert(varNodevalue);

    ondataavailable 属性
    ---------------------
    指定一个事件来处理ondataavailable 事件。
    (更多关于ondataavailable 事件的信息,
    请参阅附录中<document对象事件>的部分)。

    基本语法:
    xmlDocNode.ondataavailable = value;
    说明:此属性是唯写,允许文件作者一旦数据为可用,即可尽快的使用数据来运作。
    使用范例:
    xmlDoc.ondataavailable = alert("Data is now available.");


    onreadystatechange 属性
    ------------------------
    指定一个事件来处理onreadystatechange 事件。
    这个事件能辨识readyState 属性的改变。

    基本语法:
    xmlDocNode.onreadystatechange = value;
    说明:此属性是唯写的,允许文件作者指定当readyState 属性改变时呼叫事件。
    使用范例:
    xmlDoc.onreadystatechange =
    alert("The readyState property has changed.");


    ownerdocument属性
    ------------------------
    传回文件的根节点,包含目前节点。


    基本语法:
    objOwnerDoc = xmldocument.ownerdocument.
    说明:此属性是只读的,传回一个包含文件根节点的对象,包含特定的节点。
    使用范例:
    objOwnerDoc = xmlDoc.childNodes.item(2).ownerdocument.
    alert(objOwnerDoc);


    parentNode 属性
    -----------------
    传回目前节点的父节点。只能应用在有父节点的节点中。
     
    基本语法:
    objParentNode = xmldocument.ode.parentNode;
    说明:此属性是只读的,传回包含指定节点的父节点对象。
    如果此节点不存在于文件树中,将传回null。
    使用范例:
    objParentNode = xmlDoc.childNodes.item(1).parentNode;
    alert(objParentNode);


    parseError 属性
    -----------------
    传回一个DOM 解析错误对象,此对象描述最后解析错误的讯息。

    基本语法:
    objParseErr = xmldocument.parseError;
    说明:此属性是只读的。如果没有错误发生,将传回0。
    使用范例:
    objParseErr = xmlDoc.parseError;
    alert(objParseErr);


    previousSibling 属性
    ---------------------
    传回目前节点之前的兄弟节点。

    基本语法:
    objPrevSibling = xmldocument.previousSibling;
    说明:传回一个对象,这个属性是只读的。若该节点没有包含前面的兄弟节点,会传回null。
    使用范例:
    objPrevSibling = xmlDoc.document.lement.childNodes.item(3).previousSibling
    alert(objPrevSibling);


    readyState 属性
    -------------------
    传回XML 文件资料的目前状况。

    基本语法:
    intState = xmldocument.readyState;
    说明:这个属性是只读的,
    传回值有以下的可能:
    0-UNINITIALIZED:XML 对象被产生,但没有任何文件被加载。
    1-LOADING:加载程序进行中,但文件尚未开始解析。
    2-LOADED:部分的文件已经加载且进行解析,但对象模型尚未生效。
    3-INTERACTIVE:仅对已加载的部分文件有效,在此情况下,对象模型是有效但只读的。
    4-COMPLETED:文件已完全加载,代表加载成功。
    使用范例:
    alert("The readyState property is " + xmlDoc.readyState);


    url 属性
    ---------------
    传回最近一次加载XML 文件的URL。

    基本语法:
    strDocUrl = xmldocument.url;
    说明:这个属性是只读的,传回最近一次加载成功文件的URL,
    若文件仅存在主存储器中(表示该文件并非由外部档案加载),则传回null
    使用范例:
    alert(xmlDoc.url);

    validateOnParse 属性
    ----------------------
    告诉解析器文件是否有效。

    基本语法:
    boolValidate = xmldocument.validateOnParse;
    xmldocument.validateOnParse = boolValidate;
    说明:此属性是可擦写的。
    如果传回值为true,表示文件被解析时被确认是有效的。
    如果传回false,表示文件是无效的,并被认为只是标准格式的(well-formed)文件。
    使用范例:
    xmlDoc.validateOnParse = true;
    alert(xmlDoc.validateOnParse);

    xml 属性
    ------------
    传回指定节点的XML 描述和所有的子节点。

    基本语法:
    xmlvalue = xmldocument.ode.xml;
    说明:此属性是只读的。
    使用范例:
    xmlvalue = xmlDoc.document.lement.xml;
    alert(xmlvalue);


  • 相关阅读:
    android 使用adb重新建立 eclipse和模拟器间的连接
    android ADB server didn't ACK
    Android getSystemService()
    Android隐藏标题栏
    Android 与WCF REST 服务联调
    Eclipase 无法启动,启动界面显示完版本号之后无响应
    调用WCF REST服务时,使用JSON
    org.apache.http.conn.HttpHostConnectException: Connection to refused
    SqlServer跨域查询
    ASP.net导出Excel的几种方式
  • 原文地址:https://www.cnblogs.com/repository/p/1362307.html
Copyright © 2011-2022 走看看