• 未分類
  • 1

聊聊 AJAX

這篇也是引用 audi 的 聊聊 AJAX

主要是介紹何謂 AJAX 的定義,才不會讓很多人傻傻分不清楚
———————————————————————————–

本文,不是教你怎麼設計 AJAX,已經有太多述論述在談論怎麼設計 AJAX 了,如果這些論述你仍看不懂,對 AJAX 還是一頭霧水時,那可以好好看一下本文。

所有的文章都告訴你,AJAX=Asynchronous Javascript And XML,也都告訴你這是 Jesse James Garrett 所提出的名詞,順便也把 Jesse James Garrett 對 AJAX 的定義又翻譯了一遍,我也有翻喔,為了避免你還要到別處查,看一下:

  • 以XHTML及CSS為基本呈現手法
  • 以文件物件模式(DOM)作為動態顯示及互動手法
  • 用XML及XSLT作為資料操作及交換
  • 使用XMLHttpRequest擷取非同步(Asynchronous)資料
  • 最後用Javascript把這些都串在一起

好了,基本教義講完了,但有多少人就因為這幾條明白了 AJAX 呢?很少,連中文書都很少,現有中文書籍,過半是翻譯,劈頭就由 XMLHttpRequest 物件開始說起,結果一樣讓人一頭霧水。

為什麼?

一定一堆人在問為什麼,事實上,我個人認為結論很簡單,沒有人告訴你應該用不同角度去看待 AJAX 這項…..「技術」!

我為什麼特別把「技術」兩個字加強語氣?理由很簡單,AJAX 根本就是一項技巧,正如中國菜一樣,切功、炒功練好,能變換的菜色百百種,AJAX 有新技術嗎?要講有,就是除了 IE 瀏覽器之外的其他瀏覽器,已經在支援 XMLHttpRequest 物件了,這造成了廣泛的流通性,不再是 IE 專屬技術(IE 以 ActiveX 型式產生物件,ActiveX 的危險性,搖搖頭,就別談了,連 IE 都開始主動封鎖 ActiveX 物件,你說呢?)

如果你想自學 AJAX,而途徑是 Google 搜尋文件,我認為可以省省力氣,那些文抄公們,會讓你找到的前 10 頁的內容是一模一樣,然後就貼一段程式告訴你,如此如此這般般的 Hello World!真的,沒什麼屁用!這些文章,你都可以全部捨棄,看下面的連結就好。

建議閱讀:AJAX 上手篇 – by Mozilla

路人甲:「好了,卜維丰,你不虧人會死嗎?」

不是我愛虧人,再拜一拜 Google 大神,哇,一堆,什麼一定要用 AJAX 的幾十個情況,又是什麼幾十個 AJAX 範例等等,一堆文章讓人眼光燎亂,一堆 Framework 可以下載,Dojo,聽過吧!真的,我實在太配服了,不過,Dojo 是所謂 Client Side Framework,什麼意思?就是用戶端套件,可以把用戶端操作搞的像應用程式。看過雅虎新版郵件程式吧!這東西就是 Dojo 代表作之一。

重點來了,有 AJAX 這項整合技術發表才發展出來這些 Client Side Framework 嗎?我只能告訴你,那是動力之一,過去,光刷新換頁,就讓一堆追求完美的設計師吐血不已,現在,不用換頁了(不用換頁是 AJAX 的重要特色及缺陷)很多過去只能用想的事,現在能作到了,全都拜瀏覽器支援 XMLHttpRequest 物件。

XMLHttp 並不新鮮啊,這裡,我就發表過一篇關於 ASP XMLHttp 物件使用例,如果你對 AJAX 還一知半解,試著去想想,以前要用 ASP 或 PHP 向主機要資料,頁面非切換不可,現在不用了,默默的主機就收到指令執行,再把結果丟回來,多好啊,我打個比方,這和自己出去吃飯 vs 叫外賣一樣!

所以,非同步是 AJAX 重要精神之一,那妙了!看看這篇文章,先看標題:

Ajax & PHP without using the XmlHttpRequest Object

如果一個不用 XMLHttpRequest 物件的技術,也叫 AJAX 的話,那 Jesse James Garrett 看了不知作何感想!你想喔,一部不用油的車,可能是電動車或瓦斯車喔,那一部不用柴油的柴油車,到底是什麼?

學習 AJAX 首先,你不能把 AJAX 當神看待,AJAX 不是萬能,不能因為要出書,就把 AJAX 捧上天,AJAX 也有致命的缺陷,其次,AJAX 目前已經被炒到 Client Side 遠大於 Server Side 了(必然的,Server Side 能作的事真的不多),結果,大家都以 Google Mail 為師,反正,原始碼打開來,看到的是一堆 Javascript Code 的網站,就能掛上 AJAX 的招牌!呼!我 1999 年的作品,http://www.carousel.com.tw v9 ,就已經能作到讀取外部檔,就是頁面不動,不刷新, 那個年代,連 ActiveX 都沒有咧,所以也叫 AJAX?

用隱藏的 IFRAME 也能達成很多不刷新頁面的效果,一堆網站,就稱這是 AJAX,我個人認為這都有問題,這只是效果相同,本質上差異很大,這就是不能單用一個角度去看 AJAX 的意思。

AJAX 的技巧面遠遠大於技術面!

這句話,我認為很值得有志加入 AJAX 領域的人好好想一想,所謂戲法人人會變,巧妙各有不同,有人把購物車作成拖曳式,把產品圖拉到車子裡,完成放入購物車的動作,看起來很炫,非常炫,重點是,當放開滑鼠時,主機要真的能收到這項產品編號才是最重要的,所以,動作全是花招,這些花招全部用 Javascritp DOM 就能完成!

所以,如果你還在尋找 AJAX 是什麼,我用白話告訴你:你作你的,主機作主機的,互不干擾,主機搞定,自然會通知你,你在設計程式時,留個小秘探隨時等著接收主機搞定後回傳的資料。

這就是 AJAX 的主要精神!

Comments

comments

您可能也會喜歡…

1 個回應

  1. Anonymous表示:

    Javascritp 打錯了

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料