Thinking in AJAX(一) —— AJAX

來源:互聯網
上載者:User

眾所周知,非同步互動、JavaScript指令碼和XML封裝資料是AJAX的三大特徵。其實,在實際應用中,不需要牢牢套死這三條大律,在我看來,AJAX - X,即去掉用XML封裝資料,也不失為一種好的設計思路,如果應用恰當,更顯輕盈步伐和巧妙思路。

一般讀取AJAX返回的XML結構的資料時使用XMLHttp的responseXML對象屬性,同時,XMLHttp也提供了另外一個屬性,即ResponseText,通過這個屬性,XMLHttp可以接受來自伺服器的文本結構的字串資訊。去掉XML的AJAX可以使用ResponseText這個對象屬性,很靈活的操控返回資料的格式,可以自訂格式,比如我通常喜歡用c語言的那種檔案流方式定義返回的字串結構,有檔案頭和具體的檔案資訊實體,檔案頭分為狀態資訊以及檔案字元長度,我摒棄了檔案字元長度的定義,規定死接受的ResponseTex字串中的第一位為狀態代碼,比如設定常量值0表示一起正常,非0的數字表示不正常,甚至有錯誤等。如果有非0值,程式自動取第二位起到257位(長度為256)的字串組成為狀態資訊,從258位開始到末尾的字串就是伺服器返回的正常結果資訊。

substring(0,1)取狀態代碼

substring(1,256)取伺服器錯誤資訊(錯誤資訊不夠256位用空格補齊,取到資料後進行Trim處理)

substring(256,末尾)取伺服器返回的資料資訊

三次substring即完成了一個簡單但完整的互動工作。比起XML解析組件來說要快的多。

用ResponseText比封裝為XML處理資料快和簡單是一個原因,另一個原因是可操控性更大更靈活,開啟Google Suggest,在搜尋方塊輸入字元可以給你給出拼字提示,Suggest就是應用了AJAX技術,不過它在從伺服器返回資料時並沒有使用XML封裝,也沒有自訂ResponseText格式,而是直接將傳回碼組織成js指令碼,通過瀏覽器返回後直接執行,如eval(XMLHttp.ResponseText)這樣的方式進行執行,http://www.google.com/complete/search?hl=en&js=true&qu=ajax 通過這個連結你可以看到Suggest利用AJAX得到的返回資料,此頁面是在Google Suggest的搜尋方塊中輸入"AJAX"後得系統動態返回的資料。

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這個函數,那當然得實現定義後並裝載到頁面中啦。XMLHttp這個名字以XML開頭,讓很多人禁錮了思想和創意,完全拋棄X,你也可以做出純AJAX的執行個體來。

當然,對於大型系統來講,為了保持資料介面的一致和整齊,還是用XML來傳遞更嚴謹更統一點,聽說微軟已經發起了重寫XML Parse組件的號召,估計下一個版本的XMLHttp還是DOMParser還是MSXML2.DOMDocument都會大大提高效率,減少資源佔用的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.