XMLHttpRequest
提供客户端同http服务器通讯的协议
Dim HttpReq As New MSXML2.XMLHTTP30 HttpReq.open "GET", "http://localhost/books.xml", False HttpReq.send MsgBox HttpReq.responseText
备注
客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。
XMLHttpRequest成员
属性
* 表示此属性是W3C文档对象模型的扩展.
方法
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); } }
备注
此属性只写,为W3C文档对象模型的扩展.
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);
备注
变量,此属性只读,以unsigned array格式表示直接从服务器返回的未经解码的二进制数据。
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);
返回值
长整形标准http状态码,定义如下:
100
|
Continue
|
101
|
Switching protocols
|
200
|
OK
|
201
|
Created
|
202
|
Accepted
|
203
|
Non-Authoritative Information
|
204
|
No Content
|
205
|
Reset Content
|
206
|
Partial Content
|
300
|
Multiple Choices
|
301
|
Moved Permanently
|
302
|
Found
|
303
|
See Other
|
304
|
Not Modified
|
305
|
Use Proxy
|
307
|
Temporary Redirect
|
400
|
Bad Request
|
401
|
Unauthorized
|
402
|
Payment Required
|
403
|
Forbidden
|
404
|
Not Found
|
405
|
Method Not Allowed
|
406
|
Not Acceptable
|
407
|
Proxy Authentication Required
|
408
|
Request Timeout
|
409
|
Conflict
|
410
|
Gone
|
411
|
Length Required
|
412
|
Precondition Failed
|
413
|
Request Entity Too Large
|
414
|
Request-URI Too Long
|
415
|
Unsupported Media Type
|
416
|
Requested Range Not Suitable
|
417
|
Expectation Failed
|
500
|
Internal Server Error
|
501
|
Not Implemented
|
502
|
Bad Gateway
|
503
|
Service Unavailable
|
504
|
Gateway Timeout
|
505
|
HTTP Version Not Supported
|
备注
长整形,此属性只读,返回当前请求的http状态码,此属性仅当数据发