355
技術社區[雲棲]
AJAX(1)
昨天有同事做了ajax的講座,恩 雖然原來自己也看過ajax方麵的東西,但在細節上,聽了講座還是覺得有了更深入的了解。
不敢獨享 故分享於網上,望對諸君有些許作用。
本帖說的就是概念 發展 趨勢,具體技術見帖2
AJAX 作為一個概念火了很久,很多人聽過,但不知道是什麼,表現又在哪裏。
AJAX的英文全稱為 Asynchronous Javascript And XML, 即 異步式 javascript與xml
關鍵詞在於異步, 異步是相對同步來講的,或者覺得別扭,你可以稱之為 非同步
以個人的感覺而言,最大的改變在於表單提交上。
以往的表單 提交之後 要等待所有的表單內容被傳到服務端,
服務端處理表單後 再返回給瀏覽器
往返的都是全部的網頁代碼
時間很長,在當年帶寬有限的時候 很可能出現 等待、提交失敗的情況
(以下為個人猜想)
為了解決這個問題,有人就提出了 是不是可以用小包代替大包 來保證數據傳輸的準確性(大包遇到傳輸中斷受到的影響顯然比小包要大),
最好還可以隻傳送關鍵數據不傳送其他的代碼,再能實現隻傳遞被改變的數據就更好了。
javascript+DOM與XML這個時候就進入了大家的眼界
javascript可以動態靈活的控製頁麵的內容,DOM將網頁變得模塊化,xml是簡潔的數據傳輸。結合起來就正是我們想要的解決方案。
由javascript來監聽輸入,一旦焦點切換,則將信息提取出來用xml小包送給服務端判斷。然後再讓javascript基於服務端的反饋來通過DOM改變頁麵內容。
而由於javascript本身改變的是的特性,讓這種改變可以與用戶的其他提交不衝突,還完成了異步的概念。
當然 裏麵的部件都是有得取舍的,比如xml可以用 XLST什麼的。隻要最終目標沒有變就好。
也就是保證 1 可以動態的改變部分頁麵的內容,2 可以隻傳送關鍵數據。
(猜想完畢)
下麵是官方說法:
該技術在1998年前後得到了應用。允許客戶端腳本發送HTTP請求(XMLHTTP)的第一個組件由Outlook Web Access小組寫成。該組件原屬於微軟Exchange Server,並且迅速地成為了Internet Explorer 4.0[3]的一部分。部分觀察家認為,Outlook Web Access是第一個應用了Ajax技術的成功的商業應用程序,並成為包括Oddpost的網絡郵件產品在內的許多產品的領頭羊。但是,2005年初,許多事件使得Ajax被大眾所接受。Google在它著名的交互應用程序中使用了異步通訊,如Google討論組、Google地圖、Google搜索建議、Gmail等。Ajax這個詞由《Ajax: A New Approach to Web Applications》一文所創,該文的迅速流傳提高了人們使用該項技術的意識。另外,對Mozilla/Gecko的支持使得該技術走向成熟,變得更為易用。
AJAX前景非常樂觀,可以提高係統性能,優化用戶界麵。AJAX現有直接框架AjaxPro,可以引入AjaxPro.2.dll文件,可以直接在前台頁麵JS調用後台頁麵的方法。但此框架與FORM驗證有衝突。另微軟也引入了AJAX組建,需要添加AjaxControlToolkit.dll文件,可以在控件列表中出現相關控件。
總之 AJAX出現了,人們驚喜的意識到,不光速度和用戶體驗得到了改善,我們對於交互這件事情也有了更多的影響。
我們最常見ajax技術的地方仍然是各種表單,比如論壇注冊,添入用戶名,切換下,會自動告訴你這個名字是否被用過,而不是提交表單之後,也不需要點某個鏈接來確認這件事。
私以為在廣大的網頁遊戲裏也廣泛的使用了ajax技術。
那麼評述下ajax的優劣之處
好處自然是對帶寬的消耗降低了,對頁麵的自由構成提供了必要的條件,用戶得到了更好的體驗更快的響應,還為互動性操作提供了更好更快的選擇
壞處目前來講 主要有兩點,
第一是對於現有的瀏覽器後退按鈕來講,往往退回的是上次整體刷新的頁麵,而不是局部刷新之前,所以可能會令用戶迷惑並且無法保存自己想要的某一具體頁麵狀態
第二是對於響應失敗的情況,ajax實在無法提供很多的幫助讓用戶了解並確認這件事,因為 (誰知道這裏有沒有ajax的代碼呢。。。)
第一條相信在更合理的DOM以及服務端響應設定上 是可以想辦法繞過的
第二條。。。聽天由命吧
在目前來講, ajax的支持程度怎樣呢, 從瀏覽器來說
IE 從5.0開始支持ajax,並將XMLHttpRequest作為 ActiveXObject 來處理(當你訪問互動頁麵,IE會提示你要不要允許activex 就是這個原因), 到7.0的時候 順應大勢,將XMLHttpRequest做為javascript的一個對象來處理
FF 從出生的時候 就良好的支持了ajax, 並將XMLHttpRequest做位javascript對象來處理
Opera 主流版本良好支持ajax,但對xslt好像支持的不好
Safari 主流版本良好支持ajax
Chorme 同樣從出生就良好支持ajax 基本是與FF 相同
其他的Maxthon,greenbrowser這種基於IE內核或者Konqueror這種小眾瀏覽器 在這裏就不具體列舉了
而從使用情況來說
以google為首的大批網絡提供商在使用ajax,並且有越來越多的人開始使用ajax, 已經說明了潮流的趨勢
當然 若是有更新更好的技術出現的時候,ajax的門庭冷落也將是十分迅速的
最後更新:2017-04-02 00:06:41