書歸正傳,AJAX其實(shí)不是一種語言,甚至不是一種技術(shù),它是幾種技術(shù)的有機(jī)結(jié)合(Javascript、XML、CSS等等,其實(shí)有時還會用到更多的技術(shù),比如偶鐘情滴java^_^,就像推War3,要多個兵種加起來用才夠厲害。。。跑題了~~~~)。Javascript作為腳本語言,用Javascript操作XML和CSS,用XML做為數(shù)據(jù)的存儲介質(zhì),用CSS顯示效果和狀態(tài)。
這里不得不提的一項(xiàng)內(nèi)容就是XMLHttpRequest,偶認(rèn)為這是真正Ajax的核心東東(可能是偶見識太少了- -!),它可以模擬Request對象向服務(wù)器提交請求,并返回請求結(jié)果,這就摒棄了原有的讓人等的好煩的白白的瀏覽器顯示頁!!用句不怎么術(shù)的術(shù)語說就是“動態(tài)無刷新”。廢話不說,來看看這么強(qiáng)大的DD是怎么實(shí)現(xiàn)的~~~
不同的瀏覽器實(shí)現(xiàn)的方式不一樣,對于Mozilla, Firefox, Safari,?和Netscape瀏覽器:
var xmlhttp=new XMLHttpRequest()
對于Internet Explorer:
var xmlhttp=CreatActiveObject("Micosoft.XMLHttp")
編程要點(diǎn):
---------------------------屬性--------------------------------
屬性 |
值類型 |
說明 |
onreadystatechange |
回調(diào)函數(shù)名稱的字符串 |
指明回調(diào)函數(shù) |
readyState |
請求狀態(tài)代碼,共四種狀態(tài): 0????未初始化 1????正在裝載 2????裝載完畢 3????交互中 4????完成
|
XMLHttpRequest對象的請求狀態(tài) |
responseText |
返回?cái)?shù)據(jù)的字符串形式 |
以字符串形式存儲該請求返回的數(shù)據(jù) |
responseXML |
返回一個Xml Document對象 |
以XML數(shù)據(jù)形式存儲請求返回的數(shù)據(jù) |
status |
請求所返回的HTTP返回碼: "100" : Continue "101" : witching 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 Time-out "409" : Conflict "410" : Gone "411" : Length Required "412" : Precondition Failed "413" : Request Entity Too Large "414" : Request-URI Too Large "415" : Unsupported Media Type "416" : Requested range not satisfiable "417" : Expectation Failed "500" : Internal Server Error "501" : Not Implemented "502" : Bad Gateway "503" : Service Unavailable "504" : Gateway Time-out "505" : HTTP Version not supported
其實(shí)實(shí)際用的時候記著200是OK(本地調(diào)試時OK狀態(tài)會返回0),404是NO FOUND就可以了! |
該XMLHttpRequest所做的請求返回的HTTP返回碼 |
statusText |
字符串,此屬性只讀,以BSTR返回當(dāng)前請求的響應(yīng)行狀態(tài),此屬性僅當(dāng)數(shù)據(jù)發(fā)送并接收完畢后才可獲取。 |
XMLHttpRequest所做的Http請求返回信息 |
---------------------------方法---------------------------
方法 |
參數(shù) |
返回值 |
說明 |
abort() |
無 |
無 |
取消當(dāng)前的請求 |
getAllResponseHeaders() |
無 |
以字符串形式返回所有的HTTP頭 |
以字符串形式返回所有的HTTP頭 |
getResponseHeader("headerName") |
headerName參數(shù)指定的http頭字符串 |
返回指定的HTTP頭字符串 |
從響應(yīng)信息中獲取指定的http頭 |
open('method','URL',async,'uname','pswd') |
method字符串指定用何方法發(fā)送請求,比如POST、GET、PUT及PROPFIND。大小寫不敏感 URL字符串指定請求的HTTP地址,可以為絕對路徑也可以為相對路徑 async布爾值指定請求是否為異步方式,默認(rèn)為true。如果為真,當(dāng)狀態(tài)改變時會調(diào)用onreadystatechange屬性指定的回調(diào)函數(shù)。 uname字符串指定用于服務(wù)器驗(yàn)證用戶名,如果服務(wù)器需要驗(yàn)證,此處指定用戶名,如果未指定,當(dāng)服務(wù)器需要驗(yàn)證時,會彈出驗(yàn)證窗口。 pswd字符串指定驗(yàn)證信息中的密碼部分,如果用戶名為空則此部分被忽略。
|
無 |
創(chuàng)建一個新的http請求,并指定此請求的方法、URL以及驗(yàn)證信息 |
send(content) |
content參數(shù)可以是任何想發(fā)送到服務(wù)器端的數(shù)據(jù) |
無 |
發(fā)送請求到http服務(wù)器并接收回應(yīng),此方法的同步或異步方式取決于open方法中的bAsync參數(shù),如果bAsync == False,此方法將會等待請求完成或者超時時才會返回,如果bAsync == True,此方法將立即返回。如果發(fā)送的數(shù)據(jù)為XML DOM object,則回應(yīng)將被編碼為在xml文檔中聲明的編碼,如果在xml文檔中沒有聲明編碼,則使用默認(rèn)的UTF-8。 |
setRequestHeader("label","value") |
label字符串指定頭名稱 value字符串指定頭的值 |
|
單獨(dú)指定請求的某個http頭,如果已經(jīng)存在已此名稱命名的http頭,則覆蓋之。此方法必須在open方法后調(diào)用。 |