XMLHttp 不是 Ajax 唯一的方法
阿恆
隨著 Ajax 近年來瘋魔全球的網站設計師,大家一提起互動網頁、Web 2.0、SOA(服務導向架構),便自自然然想起組成 Ajax 的幾個字: Javascript、XML。彷彿要做到那靈巧的互動功能,便一定要調用 XMLHttp,真的是這樣嗎?
其實我們至少還有兩種方法:script tags 及 iframe,可以幫助我們編寫互動性強,又毋須把整頁網頁下載即可更新頁面資料的網頁。
說 script tags 大家可能丈八金剛──摸不著頭腦,但一說 JSON 是不是立即恍然大悟?沒錯,兩者其實是同一種東西,當然 JSON 聽起來比較「摩登」、「時尚」,它的概念是把數據編碼成 Javascript 的語句,從伺服器送給客戶端,客戶端則使用 Javascript 在網頁內動態地增加一個 script 物件,然後把 script 物件的網址指向伺服器的的程式,瀏覽器便會自動下載有關的 Javascript 然後執行,需要傳送參數的話可以利用 GET 方法在網址後面附上參數。
至於 iframe 的道理也很簡單,伺服器把數據編碼成 HTML,客戶端則使用 Javascript 再網頁內動態地增加一個 iframe,並且把 iframe 的網址指向伺服器的程式,瀏覽器便會自動從伺服器下載數據,當然在處理數據前必須把它從 HTML 中解碼出來,此外也要把 iframe 隱藏,因為顯示它的內容並無意義,我們可以透過設定 iframe 的 visibility 為 hidden,與及 display 為 none 來做到。
XMLHttp、script tags 和 iframe,哪一種方法比較好?XMLHttp 可以用來傳送 XML、文本、HTML、Javascript 等數據,不過透過 Javascript 來調用 XMLHttp 與及處理它送回來的資料,速度上遠遠及不上直接從伺服器下載 Javascript,所以速度上 Javascript 是最佳的選擇,但由於所有數據都必須編碼成 Javascript 的語句,所以數據種類的靈活性及不上 XMLHttp,靈活性低並不等於不能做到,只要適當地編碼,任何數據都可以包裝成 Javascript,問題只是編碼和解碼的要花多少功夫。至於 iframe 則可說是聊備一格,它在各方面都比 XMLHttp 和 script tags 差。