本文來(lái)源網(wǎng)絡(luò),屬于轉(zhuǎn)載范圍,,特此聲明
眾所周知,異步交互、JavaScript腳本和XML封裝數(shù)據(jù)是AJAX的三大特征。其實(shí),在實(shí)際應(yīng)用中,不需要牢牢套死這三條大律,在我看來(lái),AJAX - X,即去掉用XML封裝數(shù)據(jù),也不失為一種好的設(shè)計(jì)思路,如果應(yīng)用恰當(dāng),更顯輕盈步伐和巧妙思路。
一般讀取AJAX返回的XML結(jié)構(gòu)的數(shù)據(jù)時(shí)使用XMLHttp的responseXML對(duì)象屬性,同時(shí),XMLHttp也提供了另外一個(gè)屬性,即ResponseText,通過(guò)這個(gè)屬性,XMLHttp可以接受來(lái)自服務(wù)器的文本結(jié)構(gòu)的字符串信息。去掉XML的AJAX可以使用ResponseText這個(gè)對(duì)象屬性,很靈活的操控返回?cái)?shù)據(jù)的格式,可以自定義格式,比如我通常喜歡用c語(yǔ)言的那種文件流方式定義返回的字符串結(jié)構(gòu),有文件頭和具體的文件信息實(shí)體,文件頭分為狀態(tài)信息以及文件字符長(zhǎng)度,我摒棄了文件字符長(zhǎng)度的定義,規(guī)定死接受的ResponseTex字符串中的第一位為狀態(tài)碼,比如設(shè)定常量值0表示一起正常,非0的數(shù)字表示不正常,甚至有錯(cuò)誤等。如果有非0值,程序自動(dòng)取第二位起到257位(長(zhǎng)度為256)的字符串組成為狀態(tài)信息,從258位開(kāi)始到末尾的字符串就是服務(wù)器返回的正常結(jié)果信息。
substring(0,1)取狀態(tài)碼
substring(1,256)取服務(wù)器錯(cuò)誤信息(錯(cuò)誤信息不夠256位用空格補(bǔ)齊,取到數(shù)據(jù)后進(jìn)行Trim處理)
substring(256,末尾)取服務(wù)器返回的數(shù)據(jù)信息
三次substring即完成了一個(gè)簡(jiǎn)單但完整的交互工作。比起XML解析組件來(lái)說(shuō)要快的多。
用ResponseText比封裝為XML處理數(shù)據(jù)快和簡(jiǎn)單是一個(gè)原因,另一個(gè)原因是可操控性更大更靈活,打開(kāi)Google Suggest,在搜索框輸入字符可以給你給出拼寫(xiě)提示,Suggest就是應(yīng)用了AJAX技術(shù),不過(guò)它在從服務(wù)器返回?cái)?shù)據(jù)時(shí)并沒(méi)有使用XML封裝,也沒(méi)有自定義ResponseText格式,而是直接將返回代碼組織成js腳本,通過(guò)瀏覽器返回后直接執(zhí)行,如eval(XMLHttp.ResponseText)這樣的方式進(jìn)行執(zhí)行,http://www.google.com/complete/search?hl=en&js=true&qu=ajax 通過(guò)這個(gè)鏈接你可以看到Suggest利用AJAX得到的返回?cái)?shù)據(jù),此頁(yè)面是在Google Suggest的搜索框中輸入"AJAX"后得系統(tǒng)動(dòng)態(tài)返回的數(shù)據(jù)。
sendRPCDone(frameElement, "ajax", new Array("ajax", "ajax amsterdam", "ajax fc", "ajax ontario", "ajax grips", "ajax football club", "ajax public library", "ajax football", "ajax soccer", "ajax pickering transit"), new Array("3,840,000 results", "502,000 results", "710,000 results", "275,000 results", "8,860 results", "573,000 results", "40,500 results", "454,000 results", "437,000 results", "10,700 results"), new Array(""));瀏覽器段拿到這段代碼后直接eval就可以了,至于sendRPCDone這個(gè)函數(shù),那當(dāng)然得實(shí)現(xiàn)定義后并裝載到頁(yè)面中啦。XMLHttp這個(gè)名字以XML開(kāi)頭,讓很多人禁錮了思想和創(chuàng)意,完全拋棄X,你也可以做出純AJAX的實(shí)例來(lái)。
當(dāng)然,對(duì)于大型系統(tǒng)來(lái)講,為了保持?jǐn)?shù)據(jù)接口的一致和整齊,還是用XML來(lái)傳遞更嚴(yán)謹(jǐn)更統(tǒng)一點(diǎn),聽(tīng)說(shuō)微軟已經(jīng)發(fā)起了重寫(xiě)XML Parse組件的號(hào)召,估計(jì)下一個(gè)版本的XMLHttp還是DOMParser還是MSXML2.DOMDocument都會(huì)大大提高效率,減少資源占用的。
ajax版簡(jiǎn)易聊天室介紹及源碼下載
http://blog.csdn.net/thinkpadleo/archive/2006/01/22/586051.aspx
ajax經(jīng)典文章列表(部分為中文版)
http://blog.csdn.net/thinkpadleo/archive/2006/01/13/578367.aspx
仿google一行代碼生成SiteMap
http://blog.csdn.net/thinkpadleo/archive/2006/01/13/578376.aspx
Ajax簡(jiǎn)介(轉(zhuǎn)自http://dev2dev.bea.com.cn,包含例程下載)
http://blog.csdn.net/thinkpadleo/archive/2006/01/22/586260.aspx
Ajax原理詳細(xì)說(shuō)明(轉(zhuǎn)自ibm開(kāi)發(fā)者網(wǎng)站)
http://blog.csdn.net/thinkpadleo/archive/2006/01/22/586267.aspx