Thinking in AJAX(一) —— AJAX-X

來源:互聯網
上載者: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"後得系統動態返回的資料。

        瀏覽器段拿到這段代碼後直接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.