亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

淺析XMLHTTPRequest的屬性和方法

2024-09-05 20:54:45
字體:
來源:轉載
供稿:網友

由于現在在公司負責制作標準的靜態頁面,為了增強客戶體驗,所以經常要做些AJAX效果,也學你也和我一樣在,學習AJAX。而設計AJAX時使用的一個重要的技術(工具)就是XMLHTTPRequest對象了。這里海嘯把我學習XMLHTTPRequest對象的一點資料拿出來跟大家一起分享。文中的資料都是海嘯在學習時在網上收集的,如果您開過,那就再加深下印象吧?。ㄈ绻X得侵犯了您的版權,請聯系海嘯。(haixiao_yao[at]yahoo.com.cn))

1、XMLHTTPRequest對象什么是?

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

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

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

2、創建XMLHTTPRequest對象

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

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

3、屬性和方法

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

 

<html>
<head>
<title>XMLHTTPRequest對象的說明DEMO</title>
<script language="javascript" type="text/javascript">
<!--
var xmlhttp;
// 創建一個XMLHTTPRequest對象
function createXMLHTTPRequext(){
if(window.ActiveXObject) {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
else if(window.XMLHTTPRequest){
xmlhttp = new XMLHTTPRequest();
}
}
function PostOrder(xmldoc)
{
createXMLHTTPRequext();

// 方法:open
// 創建一個新的http請求,并指定此請求的方法、URL以及驗證信息
// 語法:oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
// 參數
// bstrMethod
// http方法,例如:POST、GET、PUT及PROPFIND。大小寫不敏感。
// bstrUrl
// 請求的URL地址,可以為絕對地址也可以為相對地址。
// varAsync[可選]
// 布爾型,指定此請求是否為異步方式,默認為true。如果為真,當狀態改變時會調用onreadystatechange屬性指定的回調函數。
// bstrUser[可選]
// 如果服務器需要驗證,此處指定用戶名,如果未指定,當服務器需要驗證時,會彈出驗證窗口。
// bstrPassword[可選]
// 驗證信息中的密碼部分,如果用戶名為空,則此值將被忽略。

// 備注:調用此方法后,可以調用send方法向服務器發送數據。
xmlhttp.Open("get", "http://localhost/example.htm", false);
// var book = xmlhttp.responseXML.selectSingleNode("//book[@id='bk101']");
// alert(book.xml);


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

// 方法:send
// 發送請求到http服務器并接收回應
// 語法:oXMLHttpRequest.send(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 UI1 (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 Content-Length header for all but IStream * input types.
// 如果發送的數據為BSTR,則回應被編碼為utf-8, 必須在適當位置設置一個包含charset的文檔類型頭。
// If the input type is a SAFEARRAY of UI1, the response is sent as is without additional encoding. The caller must set a Content-Type header with the appropriate content type.
// 如果發送的數據為XML DOM object,則回應將被編碼為在xml文檔中聲明的編碼,如果在xml文檔中沒有聲明編碼,則使用默認的UTF-8。
// If the input type is an IStream *, the response is sent as is without additional encoding. The caller must set a Content-Type header with the appropriate content type.
xmlhttp.Send(xmldoc);

// 方法:getAllResponseHeaders
// 獲取響應的所有http頭
// 語法:strValue = oXMLHttpRequest.getAllResponseHeaders();
// 備注:每個http頭名稱和值用冒號分割,并以/r/n結束。當send方法完成后才可調用該方法。
alert(xmlhttp.getAllResponseHeaders());
// 方法:getResponseHeader
// 從響應信息中獲取指定的http頭
// 語法:strValue = oXMLHttpRequest.getResponseHeader(bstrHeader);
// 備注:當send方法成功后才可調用該方法。如果服務器返回的文檔類型為"text/xml", 則這句話
// xmlhttp.getResponseHeader("Content-Type");將返回字符串"text/xml"??梢允褂胓etAllResponseHeaders方法獲取完整的http頭信息。
alert(xmlhttp.getResponseHeader("Content-Type")); // 輸出http頭中的Content-Type列:當前web服務器的版本及名稱。


document.frmTest.myButton.disabled = true;
// 方法:abort
// 取消當前請求
// 語法:oXMLHttpRequest.abort();
// 備注:調用此方法后,當前請求返回UNINITIALIZED 狀態。
// xmlhttp.abort();

// 方法:setRequestHeader
// 單獨指定請求的某個http頭
// 語法:oXMLHttpRequest.setRequestHeader(bstrHeader, bstrValue);
// 參數:bstrHeader(字符串,頭名稱。)
// bstrValue(字符串,值。)
// 備注:如果已經存在已此名稱命名的http頭,則覆蓋之。此方法必須在open方法后調用。
// xmlhttp.setRequestHeader(bstrHeader, bstrValue);
}
function HandleStateChange()
{
// 屬性:readyState
// 返回XMLHTTP請求的當前狀態
// 語法:lValue = oXMLHttpRequest.readyState;
// 備注:變量,此屬性只讀,狀態用長度為4的整型表示.定義如下:
// 0 (未初始化) 對象已建立,但是尚未初始化(尚未調用open方法)
// 1 (初始化) 對象已建立,尚未調用send方法
// 2 (發送數據) send方法已調用,但是當前的狀態及http頭未知
// 3 (數據傳送中) 已接收部分數據,因為響應及http頭不全,這時通過responseBody和responseText獲取部分數據會出現錯誤,
// 4 (完成) 數據接收完畢,此時可以通過通過responseBody和responseText獲取完整的回應數據
if (xmlhttp.readyState == 4){
document.frmTest.myButton.disabled = false;

// 屬性:responseBody
// 返回某一格式的服務器響應數據
// 語法:strValue = oXMLHttpRequest.responseBody;
// 備注:變量,此屬性只讀,以unsigned array格式表示直接從服務器返回的未經解碼的二進制數據。
alert(xmlhttp.responseBody);

// 屬性:responseStream
// 以Ado Stream對象的形式返回響應信息
// 語法:strValue = oXMLHttpRequest.responseStream;
// 備注:變量,此屬性只讀,以Ado Stream對象的形式返回響應信息。
alert(xmlhttp.responseStream);

// 屬性:responseText
// 將響應信息作為字符串返回
// 語法:strValue = oXMLHttpRequest.responseText;
// 備注:變量,此屬性只讀,將響應信息作為字符串返回。XMLHTTP嘗試將響應信息解碼為Unicode字符串,
// XMLHTTP默認將響應數據的編碼定為UTF-8,如果服務器返回的數據帶BOM(byte-order mark),XMLHTTP可
// 以解碼任何UCS-2 (big or little endian)或者UCS-4 數據。注意,如果服務器返回的是xml文檔,此屬
// 性并不處理xml文檔中的編碼聲明。你需要使用responseXML來處理。
alert(xmlhttp.responseText);

// 屬性:responseXML
// 將響應信息格式化為Xml Document對象并返回
// 語法:var objDispatch = oXMLHttpRequest.responseXML;
// 備注:變量,此屬性只讀,將響應信息格式化為Xml Document對象并返回。如果響應數據不是有效的XML文檔,
// 此屬性本身不返回XMLDOMParseError,可以通過處理過的DOMDocument對象獲取錯誤信息。
alert("Result = " + xmlhttp.responseXML.xml);

// 屬性:status
// 返回當前請求的http狀態碼
// 語法:lValue = oXMLHttpRequest.status;
// 返回值:長整形標準http狀態碼,定義如下:
// Number:Description
// 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狀態碼,此屬性僅當數據發送并接收完畢后才可獲取。
alert(xmlhttp.status);

// 屬性:statusText
// 返回當前請求的響應行狀態
// 語法:strValue = oXMLHttpRequest.statusText;
// 備注:字符串,此屬性只讀,以BSTR返回當前請求的響應行狀態,此屬性僅當數據發送并接收完畢后才可獲取。
alert(xmlhttp.statusText);
}
}
//-->
</script>
</head>
<body>
<form name="frmTest">
<input name="myButton" type="button" value="Click Me" onclick="PostOrder('http://localhost/example.htm');">
</form>
</body>
</html>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲sss综合天堂久久| 亚洲аv电影天堂网| 国产啪精品视频| 久久久久久有精品国产| 国产亚洲人成a一在线v站| 亚洲第一色中文字幕| 精品久久中文字幕| 777精品视频| 亚洲欧美制服中文字幕| 久久精品视频亚洲| 成人欧美一区二区三区在线| 国产91精品久久久久久| 中文字幕一精品亚洲无线一区| 一区二区福利视频| 8050国产精品久久久久久| 日韩免费av一区二区| 全球成人中文在线| 欧美最顶级丰满的aⅴ艳星| 久久久精品美女| 中文字幕亚洲专区| 国产欧洲精品视频| 欧美日韩在线视频一区| 亚洲美女福利视频网站| www亚洲欧美| 亚洲欧洲av一区二区| 欧美人成在线视频| 日韩的一区二区| 国内精品久久久久久中文字幕| 成人黄色免费网站在线观看| 成人激情视频小说免费下载| 亚洲在线观看视频网站| 国产亚洲一区二区精品| 国内精品美女av在线播放| 91九色蝌蚪国产| 久久91超碰青草是什么| 久久成人精品视频| 国产精品视频自拍| 久久国产精品久久久久| 久久久视频免费观看| 97在线看福利| 久久国产精品亚洲| 久久99精品久久久久久噜噜| 精品亚洲va在线va天堂资源站| xxxxx成人.com| 国产不卡一区二区在线播放| 91影院在线免费观看视频| 久久夜色精品亚洲噜噜国产mv| 另类少妇人与禽zozz0性伦| 日韩小视频在线观看| 免费不卡在线观看av| 日韩va亚洲va欧洲va国产| 91国产中文字幕| 性欧美xxxx| 国产日韩在线观看av| 日韩av免费看网站| 国产丝袜一区二区| 国产精品福利久久久| 日韩欧美成人免费视频| www高清在线视频日韩欧美| 欧美日本高清视频| 亚洲欧美日韩爽爽影院| 456国产精品| 中文国产成人精品久久一| 中文字幕日韩专区| 精品亚洲一区二区三区在线观看| 日韩国产精品视频| 国产成人啪精品视频免费网| 日本亚洲欧美三级| 欧美有码在线观看| 日韩av网站电影| 人人澡人人澡人人看欧美| 欧美黑人又粗大| 成人精品福利视频| 在线观看欧美视频| 精品视频中文字幕| 影音先锋欧美在线资源| 亚洲a区在线视频| 日韩福利伦理影院免费| 久久久成人精品视频| 亚洲国产天堂久久国产91| 久久久国产精品一区| 亚洲一级免费视频| 亚洲 日韩 国产第一| 91免费精品国偷自产在线| 国产精品视频最多的网站| 日韩电影中文字幕在线观看| 久久精品91久久香蕉加勒比| 亚洲国产中文字幕在线观看| 久久久免费观看视频| 国产97在线观看| 久久免费精品视频| 亚洲欧美资源在线| 亚洲乱码国产乱码精品精| 国产精品视频永久免费播放| 欧美日韩国产第一页| 色偷偷88888欧美精品久久久| 国产亚洲一级高清| 国产亚洲精品一区二区| 草民午夜欧美限制a级福利片| 欧美激情精品久久久| 91精品美女在线| 欧美丰满少妇xxxxx做受| 久久频这里精品99香蕉| 欧美国产高跟鞋裸体秀xxxhd| 久久精品国产免费观看| 国产精品久久久久久久久久三级| 久久成人综合视频| 久久久国产视频91| 国产成人jvid在线播放| 欧美性理论片在线观看片免费| 国产精品久久97| 国产欧美日韩精品专区| 国产精品福利无圣光在线一区| 国产日韩精品一区二区| 日韩激情av在线免费观看| 深夜福利91大全| 国产97在线视频| 日韩视频在线一区| 欧美电影免费在线观看| 国产精品久久久久久久7电影| 国产九九精品视频| 97免费在线视频| 国产精品九九久久久久久久| 亲爱的老师9免费观看全集电视剧| 欧美性xxxx在线播放| 亚洲精品免费一区二区三区| 成人啪啪免费看| 欧美性xxxx极品hd欧美风情| 日韩精品视频免费在线观看| 日韩av在线免播放器| 国产va免费精品高清在线观看| 性色av一区二区三区| 91探花福利精品国产自产在线| 97色在线观看| 国产精品色午夜在线观看| 国产成人短视频| 精品亚洲一区二区三区四区五区| 久久久精品国产网站| 国产精品一区二区3区| 久久影视三级福利片| 国产亚洲人成网站在线观看| 国产精品成人v| 日韩亚洲欧美中文高清在线| 国产69精品99久久久久久宅男| 美女999久久久精品视频| 久久国产天堂福利天堂| 欧美国产日韩二区| 国产精品狠色婷| 激情久久av一区av二区av三区| 国产成人精品久久二区二区| 欧美精品久久久久| 国产精品男女猛烈高潮激情| 国产日韩欧美在线看| 欧美高跟鞋交xxxxxhd| 久久精品色欧美aⅴ一区二区| 一区二区欧美激情| 91精品中文在线| 97在线观看免费| 国内精品一区二区三区| 国产福利成人在线| 国产精品久久久久99| 51ⅴ精品国产91久久久久久| 欧美视频免费在线观看| 欧美xxxx做受欧美.88|