性videosgratis喷潮,亚洲国产成人一区二区三区 ,一个人看的www的视频,国产精品成人精品久久久,国产亚洲欧美精品永久

您的位置: 首頁好東西使用技巧 → XMLHttpRequest對象

XMLHttpRequest對象

我要評論 2012/03/27 00:00:00來源:互聯(lián)網(wǎng) 編輯:當(dāng)易小編 [ ] 評論:0 點(diǎn)擊:547次

XMLHttpRequest對象得到下列瀏覽器的支持:Internet Explorer5.0+\Safari 1.2,Mozilla 1.0 Firefox,Opera8+以及Netscape7.IE瀏覽器使用用ActiveXObject,而其他的瀏覽器使用名為XMLHttpRequest的javascript內(nèi)建對象,如果需要針對不同的瀏覽器來創(chuàng)建此對象,可以用Try...catch語句。代碼如下:

<script type="text/javascript">

function AjaxFunction()

{

var xmlHttp;

try

{

//Firefox,Opera8.0+,Safari

xmlHttp=new XMLHttpRequest();

}

catch(err)

{

//Internet EXplorer

try

{

xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");

}

catch(err)

{

try

{

xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

}

catch(err)

{

alert("您的瀏覽器不支持Ajax!");

return false;

}

}

}

}

</script>

還有一種檢測方法:

<script type="javascript/txt">

xmlhttp=null;

if window.XMLHttpRequest)

{

//code for firefox,Opera,IE7,etc.

xmlhttp=new XMLHttpRequest();

}

else if(window.ActiveXObject)

{//code for IE6 ,IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

}

 

XMLHttpRequest對象的重要屬性:

onreadystatechange屬性存有處理服務(wù)器響應(yīng)的函數(shù)。即當(dāng)readyState值發(fā)生變化后需要執(zhí)行的函數(shù)。

readyState屬性存有服務(wù)器響應(yīng)的狀態(tài)信息。每當(dāng)readyStaten改變時(shí),就會(huì)執(zhí)行onreadystatechange函數(shù)。

readystate屬性可能的值如下:

0   請求未初始化,在調(diào)用open()之前,已經(jīng)創(chuàng)建一個(gè)XMLHttpRequest對象,但是還沒有初始化

1   在調(diào)用send()之前,已經(jīng)調(diào)用了open()方法并且XMLHttpRequest已經(jīng)準(zhǔn)備好把一個(gè)請求發(fā)送到服務(wù)器。

2   已經(jīng)通過send()方法把一個(gè)請求發(fā)送到服務(wù)器端,但是還沒有收到一個(gè)響應(yīng)

3   請求處理中,此時(shí),已經(jīng)接收到HTTP響應(yīng)頭部信息,但是消息體部分還沒有完全接收結(jié)束

4   請求已經(jīng)完成(可以訪問服務(wù)器響應(yīng),并使用它)

 status屬性:XMLHttpRequest對象的status屬性一般用來返回服務(wù)器的HTTP狀態(tài)碼。status為200表示“成功”,status為404代表“頁面未找到”。有時(shí)候,特別是剛開始學(xué)Ajax的時(shí)候,可能會(huì)將代碼直接在本地運(yùn)行。如果在本地運(yùn)行(如:C:\ajax\helloworld.htm),那么status屬性不管是在“成功”還是“頁面未找到”的情況下,都返回的是0,而不是200和404。

status狀態(tài)值

status屬性描述了HTTP狀態(tài)代碼,當(dāng)readyState值為3(正在接收中)或4(已加載)時(shí),這個(gè)status屬性才可用。當(dāng)readyState的值小于3時(shí)試圖存取status的值將引發(fā)一個(gè)異常。
長整形標(biāo)準(zhǔn)http狀態(tài)碼,定義如下: 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

 

statusText屬性:返回當(dāng)前請求的響應(yīng)行狀態(tài);字符串,此屬性只讀,以BSTR返回當(dāng)前請求的響應(yīng)行狀態(tài),此屬性僅當(dāng)數(shù)據(jù)發(fā)送并接收完畢后才可獲取,即僅當(dāng)readyState值為3或4才可用。當(dāng)readyState為其它值時(shí)試圖存取statusText屬性將引發(fā)一個(gè)異常。

responseText屬性:可以通過responseText屬性來取回由服務(wù)器返回的數(shù)據(jù)。當(dāng)readyState值為0、1或2時(shí),responseText包含一個(gè)空字符串。當(dāng)readyState值為3(正在接收)時(shí),響應(yīng)中包含客戶端還未完成的響應(yīng)信息。當(dāng)readyState為4(已加載)時(shí),該responseText包含完整的響應(yīng)信息。

 

responseXML屬性
  此responseXML屬性用于當(dāng)接收到完整的HTTP響應(yīng)時(shí)(readyState為4)描述XML響應(yīng);此時(shí),Content-Type頭部指定MIME(媒體)類型為text/xml,application/xml或以+xml結(jié)尾。如果Content-Type頭部并不包含這些媒體類型之一,那么responseXML的值為null。無論何時(shí),只要readyState值不為4,那么該responseXML的值也為null。
  其實(shí),這個(gè)responseXML屬性值是一個(gè)文檔接口類型的對象,用來描述被分析的文檔。如果文檔不能被分析(例如,如果文檔不是良構(gòu)的或不支持文檔相應(yīng)的字符編碼),那么responseXML的值將為null。

 

XMLHttpRequest方法:

abort()方法
  你可以使用這個(gè)abort()方法來暫停與一個(gè)XMLHttpRequest對象相聯(lián)系的HTTP請求,從而把該對象復(fù)位到未初始化狀態(tài)。

 

open()方法:初始化一個(gè)XMLHttpRequest對象,參數(shù)解析如下:

第一個(gè)參數(shù)定義發(fā)送請求所使用的方法(GET/POST/PUT/DELETE/HEAD,為了把數(shù)據(jù)發(fā)送到服務(wù)器,應(yīng)該使用POST方法;為了從服務(wù)器端檢索數(shù)據(jù),應(yīng)該使用GET方法。)

第二個(gè)參數(shù)指定處理HTTP請求的服務(wù)器端的腳本文件,通常是一個(gè)URL地址,里面包含了動(dòng)態(tài)文件,擴(kuò)展名為ASP/PHP(也可以是一個(gè)相對的地址)。

第三個(gè)參數(shù)定義對請求進(jìn)行處理的方式,有兩個(gè)值:TRUE表示進(jìn)行異步處理(默認(rèn)值);FALSE表示同步處理。

 第四個(gè)參數(shù)和第五個(gè)參數(shù)是用戶名和密碼,用于需要登錄或認(rèn)證的服務(wù)器。在調(diào)用open()方法后,XMLHttpRequest對象把它的readyState屬性設(shè)置為1(打開)并且把responseText、responseXML、status和statusText屬性復(fù)位到它們的初始值。另外,它還復(fù)位請求頭部。注意,如果你調(diào)用open()方法并且此時(shí)readyState為4,則XMLHttpRequest對象將復(fù)位這些值。


send()方法:在通過調(diào)用open()方法準(zhǔn)備好一個(gè)請求之后,你需要把該請求發(fā)送到服務(wù)器。僅當(dāng)readyState值為1時(shí),你才可以調(diào)用send()方法;否則的話,XMLHttpRequest對象將引發(fā)一個(gè)異常。該請求被使用提供給open()方法的參數(shù)發(fā)送到服務(wù)器。當(dāng)async參數(shù)為true時(shí),send()方法立即返回,從而允許其它客戶端腳本處理繼續(xù)。在調(diào)用send()方法后,XMLHttpRequest對象把readyState的值設(shè)置為2(發(fā)送)。當(dāng)服務(wù)器響應(yīng)時(shí),在接收消息體之前,如果存在任何消息體的話,XMLHttpRequest對象將把readyState設(shè)置為3(正在接收中)。當(dāng)請求完成加載時(shí),它把readyState設(shè)置為4(已加載)。對于一個(gè)HEAD類型的請求,它將在把readyState值設(shè)置為3后再立即把它設(shè)置為4。
send()方法使用一個(gè)可選的參數(shù)-該參數(shù)可以包含可變類型的數(shù)據(jù)。典型地,你使用它并通過POST方法把數(shù)據(jù)發(fā)送到服務(wù)器。另外,你可以顯式地使用null參數(shù)調(diào)用send()方法,這與不用參數(shù)調(diào)用它一樣。對于大多數(shù)其它的數(shù)據(jù)類型,在調(diào)用send()方法之前,應(yīng)該使用setRequestHeader()方法(見后面的解釋)先設(shè)置Content-Type頭部。如果在send(data)方法中的data參數(shù)的類型為DOMString,那么,數(shù)據(jù)將被編碼為UTF-8。如果數(shù)據(jù)是Document類型,那么將使用由data.xmlEncoding指定的編碼串行化該數(shù)據(jù)。

 setRequestHeader()方法

  該setRequestHeader(DOMString header,DOMString value)方法用來設(shè)置請求的頭部信息。當(dāng)readyState值為1時(shí),你可以在調(diào)用open()方法后調(diào)用這個(gè)方法;否則,你將得到一個(gè)異常。

  getResponseHeader()方法

  getResponseHeader(DOMString header,value)方法用于檢索響應(yīng)的頭部值。僅當(dāng)readyState值是3或4(換句話說,在響應(yīng)頭部可用以后)時(shí),才可以調(diào)用這個(gè)方法;否則,該方法返回一個(gè)空字符串。

  getAllResponseHeaders()方法

  該getAllResponseHeaders()方法以一個(gè)字符串形式返回所有的響應(yīng)頭部(每一個(gè)頭部占單獨(dú)的一行)。如果readyState的值不是3或4,則該方法返回null。

關(guān)鍵詞:XMLHttpRequest