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頭名稱和值用冒號分割,並以\r\n結束。當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方法後調用。








web

相關文章
相關標籤/搜索