熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

XMLHTTPRequest的屬性和方法簡介

2013-11-13 09:51:05  來源: .NET編程 

  由於現在在公司負責制作標准的靜態頁面為了增強客戶體驗所以經常要做些AJAX效果也學你也和我一樣在學習AJAX而設計AJAX時使用的一個重要的技術(工具)就是XMLHTTPRequest對象了這裡海嘯把我學習XMLHTTPRequest對象的一點資料拿出來跟大家一起分享文中的資料都是海嘯在學習時在網上收集的如果您開過那就再加深下印象吧!

  XMLHTTPRequest對象什麼是

  最通用的定義為XmlHttp是一套可以在JavascriptVbScriptJscript等腳本語言中通過http協議傳送或從接收XML及其他數據的一套APIXmlHttp最大的用處是可以更新網頁的部分內容而不需要刷新整個頁面(這個功能正是AJAX的一大特點之一))

  來自MSDN的解釋XmlHttp提供客戶端同http服務器通訊的協議客戶端可以通過XmlHttp對象(MSXMLXMLHTTP)向http服務器發送請求並使用微軟XML文檔對象模型Microsoft XML Document Object Model (DOM)處理回應

  這裡說些題外話其實這個東西很早就出現了只是以前浏覽器的支持不夠只有IE中才支持所以大多數的WEB程序員都沒有怎麼用他但是現在情況發生了很大地改變Mozilla和Safari把它采用為事實上的標准主流的浏覽器都開始支持XMLHTTPRequest對象了但是這裡需要重點說明的是XMLHTTPRequest目前還不是一個WC的標准所以在不同的浏覽器上表現也稍有些區別

  創建XMLHTTPRequest對象

  對了說到區別我們這裡來看看怎麼來聲明(使用)它在使用XMLHTTPRequest對象發送請求和處理響應之前我們必須要用javascript創建一個XMLHTTPRequest對象(IE把XMLHTTPRequest實現為一個ActiveX對象其他的浏覽器[如Firefox/Safari/Opear]則把它實現為一個本地的javascript對象)下面我們就來看看具體怎麼運用javascript來創建它吧

  < script language=javascript type=text/javascript>
< !
var xmlhttp;
// 創建XMLHTTPRequest對象
function createXMLHTTPRequest(){
if(windowActiveXObject){ // 判斷是否支持ActiveX控件
xmlhttp = new ActiveObject(MicrosoftXMLHTTP); // 通過實例化ActiveXObject的一個新實例來創建XMLHTTPRequest對象
}
else if(windowXMLHTTPRequest){ // 判斷是否把XMLHTTPRequest實現為一個本地javascript對象
xmlhttp = new XMLHTTPRequest(); // 創建XMLHTTPRequest的一個實例(本地javascript對象)
}
}
//>
< /script>

  屬性和方法

  由於東西太多現在先用個頁面來列舉出說有的方法和屬性以後再來詳細舉例(主要是本人也在學習中)

  < html>
< head>
< title>XMLHTTPRequest對象的說明DEMO< /title>
< script language=javascript type=text/javascript>
< !
var xmlhttp;
// 創建一個XMLHTTPRequest對象
function createXMLHTTPRequext(){
if(windowActiveXObject) {
xmlhttp = new ActiveXObject(MicrosoftXMLHTTP);
}
else if(windowXMLHTTPRequest){
xmlhttp = new XMLHTTPRequest();
}
}
function PostOrder(xmldoc)
{
createXMLHTTPRequext();

  // 方法open
// 創建一個新的http請求並指定此請求的方法URL以及驗證信息
// 語法oXMLHttpRequestopen(bstrMethod bstrUrl varAsync bstrUser bstrPassword);
// 參數
// bstrMethod
// http方法例如POSTGETPUT及PROPFIND大小寫不敏感
// bstrUrl
// 請求的URL地址可以為絕對地址也可以為相對地址
// varAsync[可選]
// 布爾型指定此請求是否為異步方式默認為true如果為真當狀態改變時會調用onreadystatechange屬性指定的回調函數
// bstrUser[可選]
// 如果服務器需要驗證此處指定用戶名如果未指定當服務器需要驗證時

  會彈出驗證窗口
// bstrPassword[可選]
// 驗證信息中的密碼部分如果用戶名為空則此值將被忽略

  // 備注調用此方法後可以調用send方法向服務器發送數據
xmlhttpOpen(get false);
// var book = xml(//book[@id=bk]);
// alert(bookxml);

  // 屬性onreadystatechange
// onreadystatechange指定當readyState屬性改變時的事件處理句柄
// 語法oXMLHttpRequestonreadystatechange = funcMyHandler;
// 如下的例子演示當XMLHTTPRequest對象的readyState屬性改變時調用HandleStateChange函數
// 當數據接收完畢後(readystate == )此頁面上的一個按鈕將被激活
// 備注此屬性只寫為WC文檔對象模型的擴展
xmlhttponreadystatechange= HandleStateChange;

  // 方法send
// 發送請求到http服務器並接收回應
// 語法oXMLHttpRequestsend(varBody);
// 參數varBody (欲通過此請求發送的數據
// 備注此方法的同步或異步方式取決於open方法中的bAsync參數如果bAsync == False此方法將會等待請求完成或者超時時才會返回如果bAsync == True此方法將立即返回
// This method takes one optional parameter which is the requestBody to use The acceptable VARIANT input types are BSTR SAFEARRAY of UI (unsigned bytes) IDispatch to an XML Document Object Model (DOM) object and IStream * You can use only chunked encoding (for sending) when sending IStream * input types The component automatically sets the ContentLength header for all but IStream * input types
// 如果發送的數據為BSTR則回應被編碼為utf 必須在適當位置設置一個包含charset的文檔類型頭
// If the input type is a SAFEARRAY of UI the response is sent as is without additional encoding The caller must set a ContentType header with the appropriate content type
// 如果發送的數據為XML DOM object則回應將被編碼為在xml文檔中聲明的編碼如果在xml文檔中沒有聲明編碼則使用默認的UTF
// If the input type is an IStream * the response is sent as is without additional encoding The caller must set a ContentType header with the appropriate content type
xmlhttpSend(xmldoc);

  // 方法getAllResponseHeaders
// 獲取響應的所有http頭
// 語法strValue = oXMLHttpRequestgetAllResponseHeaders();
// 備注每個http頭名稱和值用冒號分割並以\r\n結束當send方法完成後才可調用該方法
alert(xmlhttpgetAllRespons


From:http://tw.wingwit.com/Article/program/net/201311/11743.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.