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,"","") ;
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);