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

首頁 > 開發 > XML > 正文

XMLHTTPRequest對象-XML/XSLT

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

XmlHttp是一套可以在Javascript、VbScript、Jscript等腳本語言中通過http協議傳送或從接收XML及其他數據的一套API。XmlHttp最大的用處是可以更新網頁的部分內容而不需要刷新整個頁面。 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>

呵呵,我很久前在blueidea上發表的,現在找到了,就發出來了,以后我會自己寫更多的東西的.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人做爰www免费看视频网站| 久久夜色精品国产| 中文字幕国产精品| 中文字幕精品久久久久| 亚洲国产美女精品久久久久∴| 欧美黑人xxxⅹ高潮交| 欧美激情中文字幕乱码免费| 亚洲视频在线观看| 日韩精品一区二区三区第95| 亚洲无av在线中文字幕| 亚洲欧美中文在线视频| 亚洲精品视频在线播放| 91久久国产精品| 午夜精品久久久久久久男人的天堂| 久久久久久网站| 国产精品美女视频网站| 91香蕉嫩草神马影院在线观看| xvideos国产精品| 日韩欧美在线视频观看| 欧美成人免费在线观看| 国产亚洲精品91在线| 国产精品99免视看9| 国语对白做受69| 日韩欧美一区二区三区久久| 国内精品小视频| 一区二区三区视频免费在线观看| 精品亚洲一区二区| 欧美国产日韩xxxxx| 亚洲人永久免费| 韩国一区二区电影| 国产精品视频一区国模私拍| 国产一区二区三区高清在线观看| 久久久av亚洲男天堂| 日本高清+成人网在线观看| 欧美激情精品久久久久久黑人| 国产精品久久一区| 成人精品一区二区三区电影黑人| 欧美极品美女电影一区| 久久综合伊人77777蜜臀| 国产精品人成电影在线观看| 久久久成人av| 国产精品综合不卡av| 亚洲综合大片69999| 国产激情久久久久| 欧美色播在线播放| 欧美成人激情在线| 自拍偷拍亚洲精品| 日韩在线视频网| 欧美精品日韩www.p站| 日韩欧美国产骚| 久久91亚洲精品中文字幕奶水| 国产精品一二三视频| 国产精品三级久久久久久电影| 国产伦精品一区二区三区精品视频| 亚洲一区二区三区sesese| 日本道色综合久久影院| 国产精品自拍网| 日韩欧美一区二区在线| 久久综合伊人77777蜜臀| 日本aⅴ大伊香蕉精品视频| 中文字幕免费国产精品| 国产精品999999| 久久精视频免费在线久久完整在线看| 久久久久久久久久久人体| 欧美成人精品h版在线观看| 国产亚洲精品激情久久| 日韩av在线网页| 国产成人一区二区三区电影| 欧美精品成人91久久久久久久| 深夜福利91大全| 久久精品久久久久久国产 免费| 69av在线视频| 亚洲性猛交xxxxwww| 国产精品极品美女粉嫩高清在线| 国产精品视频免费在线| 欧美精品做受xxx性少妇| 欧美老肥婆性猛交视频| 97精品在线视频| 97在线视频观看| 欧美日韩国产一区二区三区| 欧美精品aaa| 欧美精品一区二区免费| 国产一区玩具在线观看| 成人写真福利网| 欧美与黑人午夜性猛交久久久| 91成人免费观看网站| 国产主播在线一区| 久久久999成人| 亚洲精品久久久久久久久久久久久| 成人激情视频小说免费下载| 欧美在线视频播放| 欧美在线性爱视频| 欧美日本高清视频| 国产免费一区二区三区在线观看| 色中色综合影院手机版在线观看| 国产精品黄色影片导航在线观看| 97精品视频在线观看| 亚洲欧美制服第一页| 欧美激情a在线| 国产精品久久久久久av| 国产精品美乳在线观看| www.日韩系列| 久久精品99久久香蕉国产色戒| 日韩美女免费观看| 欧美性videos高清精品| 狠狠做深爱婷婷久久综合一区| 亚洲激情视频在线| 国产精品扒开腿做爽爽爽的视频| 日韩精品中文在线观看| 欧美香蕉大胸在线视频观看| 欧美特级www| 国产精品久久久久影院日本| 亚洲国产91精品在线观看| 成人网页在线免费观看| 欧美性xxxx极品hd欧美风情| 91精品视频在线免费观看| 国产欧美一区二区三区在线| 亚洲自拍av在线| 久久影视电视剧凤归四时歌| 欧美日韩成人在线观看| 国产精品www网站| 亚洲成**性毛茸茸| 国产精品久久久久久中文字| 久久国内精品一国内精品| 91精品国产乱码久久久久久蜜臀| 97色在线视频观看| 欧美日韩另类字幕中文| 青草青草久热精品视频在线观看| 精品露脸国产偷人在视频| 色综合久久精品亚洲国产| 日韩av在线不卡| 欧美中在线观看| 欧美精品性视频| 亚洲日本aⅴ片在线观看香蕉| 51午夜精品视频| 国产精品一区二区电影| 国内外成人免费激情在线视频网站| 欧美激情精品久久久久久免费印度| 日韩禁在线播放| 欧美国产日韩免费| 国产精品久久久久久中文字| 日韩精品在线视频美女| 欧美裸体男粗大视频在线观看| 亚洲成人国产精品| 欧美久久精品一级黑人c片| 视频在线一区二区| 日韩高清欧美高清| 国产精品极品美女粉嫩高清在线| 91在线高清视频| 成人免费看吃奶视频网站| 91麻豆国产精品| 一区二区三区美女xx视频| 色噜噜狠狠色综合网图区| 久久综合88中文色鬼| 中文字幕最新精品| 亚洲一区二区在线| 欧美大片免费观看在线观看网站推荐| 91爱爱小视频k| 日韩欧美大尺度| 亚洲成人aaa| 成人福利视频网| 中文字幕国产亚洲2019| 亚洲综合在线播放| 国产亚洲精品va在线观看|