DIV CSS 佈局教程網

Thinking in AJAX
編輯:AJAX詳解     

眾所周知,異步交互、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都會大大提高效率,減少資源占用的。

<二>基於AJax的WEB設計

一、AJax最值得稱贊的是異步交互,而不是無刷新
很多人都看好AJAX無刷新的技術,以至於認同AJAX就是用來做無刷新的。這個認識是錯誤的,什麼是無刷新?無刷新就是頁面無需重載,那什麼又是異步交互?異步交互就是一個簡單的多線程,當你在一個blog裡看文章時,同時也可以利用AJAX進行無刷新的回復提交,看起來雖然也是無刷新,但這裡最重要的是異步,即你能一邊看文章,一邊又能向服務器提交你的回復信息,利用好這個異步,才能算是掌握了AJAX的精髓。很多場合,無刷新是呈現給用戶的視覺體驗,而異步交互卻是默默無聞的工作在台後,這種情況導致大多數人的錯誤理解了AJax的權重之分。

二、推薦在WEB上輕量級的應用AJax



著名的圖片存儲網站Flickr利用AJAX可謂出神入化。我之所以這麼說,是因為我認為Flickr深知AJAX的利與弊,並且牢牢抓住自己的網站的功能特點,並沒有因AJAX而AJAX,而是架驅於技術至上,讓AJAX融於網站之中,為網站提供了更好的功能服務。如Flickr中無論是在多圖列表頁面還是單圖詳細頁面,修改圖片的標題和描述都應用了AJax技術,讓用戶無需跳轉到單獨的編輯頁面中,編輯後單擊保存,亦使用了異步交互的方式進行數據提交,這時,頁面上顯示一個Loading字符外,其他部分不受任何影響,可謂太貼心的服務。


再如基於Tag的專業Blog搜索服務商Technorati也使用了AJax,在搜索某個Tag時,頁面主導部分會即刻顯示所有Technorati數據庫中查詢到的數據條目,在左邊的側邊欄上會顯示兩個Loading圖標,過一會兒,這兩個Loading就會顯示具體的內容了,顯示的是此Tag相關的Flickr的圖片和書簽服務網站(Furl&del.icio.us)的鏈接,因為這兩部分內容是取自其他網站,如果由服務器統一先取得數據在一同顯示到頁面時,會受到網速影響而變慢,通過AJax的異步交互方式首先立即顯示本地數據,然後由客戶端去和Flickr、Furl、del.icio.us打交道分別取得它們的數據,即節約了流量帶寬又不影響用戶訪問速度,可謂高明。

通過以上兩個國外成功應用AJAX的網站,我們發現他們都使用的是輕量級的AJAX,就是那種交互簡單,數據較少的操作。這也符合AJAX的本意,雖然像www.backbase.com和bindows都在RIA上有驚人的表現能力,但是速度慢、搜索引擎支持不好、開發難度大等毛病還是無法讓用戶滿意的,請記住:AJax的最終目的是為了提高用戶體驗,為了方便用戶交互,而不是因技術而技術的。

三、AJax的MVC架構設計
很多人認為在成熟的框架中應用AJAX會破壞框架的完整性,比較常見的說法有三層架構的WEB應用中破壞MVC模式,其實不然。MVC的理論我就不多說了,經典的那三個層、五條線大家都很熟悉,在WEB應用中,因為浏覽器/服務器固有的這種請求/響應的斷開式網絡通訊模式,決定了在Model層無法實現主動向View層發出數據更新事件,所以一般常見的成熟MVC框架中都將經典MVC理論稍作修改:由Model層處理完業務後通知Control層,然後由Control層承擔向VIEw發送數據更新的義務。但是AJAX天生具有監聽功能,AJAX實現異步響應的那個OnReadyStateChange事件就具有在客戶端程序中才會有的事件監聽功能。現在想來,利用AJax實現的MVC模型有如下圖這樣:

理想化的設計如下所示:

按此在新窗口打開圖片
三層對應的文件對象:vIEw.JSP(視圖)、action.do(控制器)、model.Java(模型) 
vIEw.JSP是用戶看到的界面,並通過內置的AJAX對象異步方式給action.do發送請求,AJax.OnReadyStateChange開始監聽 
action.do接收到vIEw.JSP發過來的請求(GET或者POST方式),通過Request判斷後發送給相應的業務/數據模型model.Java 
model.Java開始執行業務操作,執行完畢直接給vIEw.JSP頁面發送數據更新的通知,這個通知的消息有可能是XML封裝的數據,也有可能是一段文本,甚至是一段HTML代碼,當然,既然用MVC,不推薦有Model發送Html,推薦還是用XML封裝業務數據即可。 
vIEw.JSP頁面中AJax對象的OnReadyStateChange接收到了數據更新通知,根據實際情況用DOM進行頁面呈現更新。 
通過以上幾步一氣呵成,一個典型的基於MVC的三層交互就完成了。當然,熟悉WEB下的MVC框架的用戶,如熟悉Struts的Java開發人員可能不習慣由Model層給View直接發送數據更新通知,那咱們也可以轉變一下,Model層業務處理完畢將更新通知先發送給Control,由Control去通知VIEw亦可。

<三>AJax框架匯總

此文原出於AJAX Patterns網站的一篇《Ajax Frameworks》的wiki文章,很早前我就注意到,後來在國內也有人翻譯了,不過最近發現此wiki還是在不斷添加維護中,截止此文發布前,作者又添加了好幾個新誕生的AJax開發工具,所以我決定重新翻譯一遍,並且時常注意原文發布狀態,一有新的內容立馬也翻譯過來,做到同步:)

此翻譯稿很大一部分內容出自國內出現的那個先前版本,我只是對新加入的幾項進行了翻譯,並且對我熟悉的產品項著重介紹了一下,以後我會抽時間收集文中提到AJAX工具相關的文章,盡量將內容介紹和功能點評做到全面詳細點。所以請關注和准備用AJax做開發的朋友關注這篇文章,我會時常更新的。原文因為是由一個wiki系統維護,所以在所難免出現參差不齊,風格上也有不統一的情況,翻譯時我也是參照原文原封不動的挪了過來,以後我會抽時間改良下。


--------------------------------------------------------------------------------

翻譯正文
基於浏覽器的應用框架一般分為兩種: 

Aplication frameworks:提供了浏覽器功能,但其最著名的還是在於通過窗口生成組件建立桌面GUI。 
Infrastructural frameworks:提供基本的框架功能和輕便式浏覽器端操作,讓開發者去創建具體應用,主要功能包括: 
基於XMLHttpRequest組件的浏覽器交互功能 
XML解析和操作功能 
根據XMLHttpRequest的返回信息進行相應的DOM操作 
一些特殊情況下,和其他的浏覽器端技術如Flash(或Java Applets)等集合到一起應用 
基於服務器端的應用框架通常以下面兩種方式工作(盡管它們根據不同的語言進行了分類) 
HTML/JS Generation(HTML/JS生成):通過服務器端生成Html和JS代碼在傳遞給浏覽器端進行直接運行 
遠程交互:Javascript調用服務器端函數(例如調用Java函數)並返回給JavaScript的回調句柄,或者請求服務器端數據信息,例如Session信息,數據庫查詢等。 


--------------------------------------------------------------------------------

目錄
1 Pure Javascript: Application Frameworks
1.1 Bindows 
1.2 BackBase 
1.3 DOJO 
1.4 Open Rico 
1.5 qooxdoo 
1.6 Tibet 
1.7 AJFORM 
2 Pure Javascript: Infrastructural Frameworks
2.1 AJaxCaller 
2.2 Flash JavaScript Integration Kit 
2.3 Google AJaxSLT 
2.4 HtmlHttpRequest 
2.5 Interactive Website Framework 
2.6 LibXMLHttpRequest 
2.7 MAJax 
2.8 RSLite 
2.9 Sack 
2.10 Sarissa 
2.11 XHConn 
3 Server-Side: Multi-Language
3.1 Cross-Platform Asynchronous INterface Toolkit 
3.2 SAJax 
3.3 Javascipt Object Notation (JSON) and JSON-RPC 
3.4 Javascript Remote Scripting (JSRS) 
3.5 Bitkraft for ASP.Net 
4 Server-Side: Java
4.1 WebORB for Java 
4.2 Echo 2 
4.3 Direct Web Remoting (DWR) 
4.4 SWATO 
4.5 AJax JSP Tag Library 
4.6 AJax Java Server Faces Framework 
5 Server-Side: Lisp
5.1 CL-AJax 
6 Server-Side: .Net
6.1 WebORB for .Net 
6.2 AJax.Net 
6.3 ComfortASP.Net 
6.4 AJaxASPects 
7 Server-Side: PHP
7.1 AJaxAC 
7.2 JPSpan 
7.3 XAJax 
8 Server-Side: Ruby
8.1 Ruby On Rails 
--------------------------------------------------------------------------------

1. Pure Javascript: Application Frameworks
1.1 Bindows (成立於2003年)
Backbase是一個通過DHtml、Javascript、CSS和Html等技術強勁聯合起來的一套完整的Windows桌面式的WEB應用程序解決方案。Bindows無需下載安裝客戶端支撐組件(如Java、ActiveX或Flash),僅需一個浏覽器。純OO的理念體現在Bindows任何地方,Bindows或許是筆者見過的最完整最強大的AJax應用程序平台。 
Bindows是商業程序的,使用了來自於MB的技術(總部位於GA USA,主要開發中心在瑞典,成立於2002年)。

Bindows框架提供的功能和特性有: 
基於面相對象技術的類和API 
一套完整的Windows桌面系統,支持各種特性窗口模式,包括菜單、表單、表格、滑動條、測量儀器窗口和其他一些Windows窗口特性支持。 
是開發zero-footprint(零空間占用)SOA客戶端應用程序首選工具包 
本機的XML,SOAP和XML-RPC支持 
單用戶到企業級開發的支持 
內建的完美的AJax支持 
Bindows開發環境: 
支持企業級規模的項目開發 
跨浏覽器、跨OS平台的支持 
不受服務器結構限制 
良好的與新的、現有的資源互操作性 
統一的開發接口 

1.2 BackBase (成立於2003年)
BackBase是一個完整的浏覽器端框架,提供了豐富的浏覽器操作功能,以及對.Net和Java平台的集成。 
商業化產品,來自於Backbase B.V(總部在Amsterdam,成立於2003年)。

1.3 DOJO (開發中,成立於2004年9月) 
DOJO提供完整的輕量級窗口組件和浏覽器-服務器消息映射支持

提供創建自定義Javascript窗口組件的框架支持 
預制的豐富的窗口類型庫 
B/S消息映射支持——XMLHttpRequest和其他機制 
支持浏覽器中的URL操縱功能 
開源許可(Academic Free License 2.1),由JotSpot的Alex Russell所領導。 
1.4 Open Rico (開發中;成立於2005年5月;基於早期的一個proprIEtary 框架) 
Open Rico是一個支持AJax架構和用戶交互的多用途框架。 

一個XMLHttpRequest response能被一個或多個的DOM對象,或者Javascript對象調用。 
支持拖拽操作 
支持基於AJax的動畫模式,如縮放和變換等 
基於Behaviors的操作庫 
使用指南,由RussMirimar的Yonah提供 
開源。源於Sabre航空公司解決方案,由Bill Scott,Darren James及另外一些人維護。 

1.5 qooxdoo (開發中; 成立於2005年5月) 
qooxdoo,是另一個發展迅猛的應用框架,提供廣泛的UI支持,正在開發基礎架構等特性。 
基礎結構特性: 
能輕易的捕獲和操縱DOM事件 
支持調試 
支持一個時間操作的Timer類 
Getter/Setter支持 
UI: 
窗口組件庫和框架 
界面布局管理 
圖像緩存和透明PNG圖片處理 
開源(LGPL). 
1.6 Tibet (開發中; 創建於2005年6月)
Tibet提供了大量的易移植和完整的JavaScript API,通過這些可以快速生成大量的客戶端代碼,Tibet自稱是企業級AJax。

遠程腳本調用封裝在XMLHttpRequest中 
URI支持 
支持所有的HTTP事件,不再僅僅是GET和POST 
低級的協議-File://和WebDav也可以當作HTTP正常使用 
Web Services調用支持,包括SOAP、XML-RPC等等 
大型的Javascript對象庫 
多種多樣的XML操作支持 
IDE和開發工具 
開源協議(OSI) 
1.7 AJFORM (創建於2005年6月)
AJFORM是一個極易上手的AJAX框架,被用來編寫入門級的AJax代碼,提供有以下功能:

三步安裝 
自動支持任意Html表單元素 
幾乎無需編碼即可實現AJax 
2 Pure Javascript: Infrastructural Frameworks
2.1 AJaxCaller(創建於2005年5月,目前是Alpha版)
AJaxCaller是一個具有多線程安全訪問的XMLHttpRequest組件,主要針對Ajax開發新手,目前仍處於alpha開發階段,僅在AJaxPatterns的在線搜索范例中使用了這個程序。 
用明文或者XML結構的數據實現和服務器的交互(GET/POST/PUT/DELETE) 
支持XMLHttRequest對象的構析(銷毀對象,C++支持內存對象的構析操作) 
支持Response的高速緩存(尚在計劃中) 
簡單的庫文件代碼易於新手學習使用,並且支持腳本調試 
開源協議 
2.2 Flash JavaScript Integration Kit
The Flash Javascript Integration Kit可以使Flash和Javascript腳本實現相互集成。

可以實現在JavaScript中調用Flash ActionScript腳本,反之亦然。 
幾乎支持雙方主要數據類型的在不同環境中的傳遞調用。 
開源協議,有幾個Flash開源愛好者維護。 
2.3 Google AJaxSLT (2005年6月發行) 
Google AJaxSLT,是一個Javascript框架,用來執行XSLT轉換以及XPath查詢。

目前在Google Map上就使用了這個。 
開源協議(BSD) 
2.4 HtmlHttpRequest(Beta版;創建於2005年)
HtmlHttpRequest最大的特點就是運用XMLHttpRequest對象和標准Html標簽IFrame來實現最大限度的跨浏覽跨平台的AJax支持,其原理是在支持XMLHttpRequest的浏覽器上調用XMLHttp,如果不支持,就用IFrame來模擬實現異步交互。

目前支持的浏覽器:IE6/Win, IE5.5/Win, IE5/Win, IE4/Win, Mozilla/Win, Opera7/Win, Safari/Mac, IE5/Mac 
尚未測試的浏覽器:IE4/Mac, Mozilla/Mac, Opera/Other, Konqueror/Linux。 
開源協議(LGPL) 
2.5 Interactive Website Framework (創建於2005年)
Interactive Website Framework定位在浏覽器中支持各種各樣的AJax基礎應用的開源項目。自稱是通過JavaScript、CSS、XML和Html實現高性能的交互式WEB框架,包括一個可定制易讀的XML解析器。實際上,IWF是一個AJax的基礎框架,並且還包括一些通用腳本代碼。

實現了線程安全的XMLHttpRequest 
對XML Document進行封裝,以便創建更具有可讀性的代碼:

var node = doc.grocerIEs.frozen[0].pizza[0].size;
封裝後的數據讀取 
var node = doc.documentElement.firstChild.firstChild.getAttribute("size");
原始的DOM操作讀取 
開源協議 
2.6 LibXMLHttpRequest (2003年6月發布) 
libXmlRequest是一個小型XMLHttpRequest封裝包

用getXML()和postXML()兩個事件簡化XMLHttpReuqest調用 
支持XMLHttpRequest對象池 
Response緩存處理 
源碼可以使用,但是有版權保護。 
2.7 MAJax 
MAJax是另一個非常小巧的HttpRequest封裝包,為收發字符型信息提供簡單接口,並為每步動作設置回調界面。

2.8 RSLite (x) 
RSLite是一個XMLHttpRequest封裝組件,作為Brent Ashley的JSRS(JavaScript Remote Scripting)其中的一部分功能單獨發布。詳情可以看JSRS的介紹

2.9 Sack(開發中,成立於2005年5月) 
Sack也是一個很有名字的微型XMLHttpRequest封裝包。調用者可以自定義回調函數或者是DOM對象。借助於回調DOM對象,可以把Response回來的數據直接以文本的方式嵌入DOM中。

2.10 Sarissa (發布於2003年2月)
Sarissa是一個JavaScript API,封裝了在浏覽器端獨立調用XML的功能。

可移植的XMLHttpRequest對象創造 
可移植的XPath查詢 
可移植的DOM操控 
可移植的XSLT 
可移植的XML序列化 
開源協議(GPL2.0和LGPL2.1) 
2.11 XHConn (2005年4月發布)
XHConn也是一個小型的XMLHttpRequest封裝庫。筆者也使用改良過的XHConn,其特點就是調用簡單,代碼也清晰易讀。

例子:
new XHConn().connect("mypage.PHP","POST","foo=bar&baz=qux",fnWhenDone);
開源協議許可 
3 Server-Side: Multi-Language
3.1 Cross-Platform Asynchronous INterface Toolkit (2005年5月) 
CPAINT是一個真正的同時支持PHP和ASP/VBScript腳本的AJAX和JSRS工具包。CPAINT在後台提供你需求的AJax和JSRS代碼,並自動返回到浏覽器端相應的Javascript腳本代碼,這種方式易於實時反饋需求的WEB應用程序。

支持PHP和ASP 
所有功能函數都在統一的JavaScript文件中 
支持遠程腳本和XML 
支持本地和遠程函數調用 
可以創建單個或多個XMLHttp對象 
返回給後台的數據即可以是文本也可以是XML/DOM文檔對象 
支持POST和GET 
用服務端代理的方式實現遠程函數和數據的訪問操作 
大部分浏覽器中測試正常使用 
在GNU、GPL、LGPL開源協議保護下發行 
3.2 SAJax (2005年3月) 
SAJax的實現方式很獨特,例如:調用一個Javascript方法x_calculateBudget(),將先把響應傳到服務器並調用一個Java calculateBudget()方法,然後以Javascript方式把值返回到x_calculateBudget_cb()中。SAJAX的名氣不錯,估計很多人都聽過甚至用過,不過缺點就是它的這套映射理論感覺較繁鎖,遠不如一些輕量級的封裝庫好用,不過SAJax最大的特點就是支持的平台豐富,幾乎囊括了WEB下常用的編程語言和平台

很方便從JavaScript函數映射到服務端代理操作 
支持多種平台(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby) 
開源協議 
3.3 Javascipt Object Notation (JSON) and JSON-RPC 
JSON是一個"face-free" XML,而JSON-RPC是一種遠程交互協議,類似於XML-RPC,對JavaScript支持較強

支持多服務端平台: Java, Python, Ruby, Perl. 
針對不同的平台有不同的包和許可協議, 如JSON-RPC-Java. 
3.4 JavaScript Remote Scripting(JSRS)(2000年) 
JSRS,較經典的遠程腳本訪問組件,支持將客戶端數據通過服務器做代理進行遠程的數據/操作交互。

支持的浏覽器:IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。 
服務器端腳本語言支持:ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。 
開源協議。由Brent Ashley提供支持。 
3.5 Bitkraft for ASP.Net 
Bitkraft是個基於(.NET)Web框架的CLR(公共語言運行庫),允許用獨特的方式創建和操作分布式Web內容。用C#編寫,運行在微軟的.Net 1.1和Mono框架下,無縫式的客戶端-服務器響應方式是它的最大特點。Bitkraft沒有使用XML組織數據,而是用JSON代替。

支持的浏覽器: IE5+, Firefox1+, NS6 
服務器端要求:ASP.NET, Mono XSP, Cassini, apache (modMono) .Net Framework 1.1+ 
事件驅動 
支持同步和異步的遠程代理 
客戶端支持所有的.Net類型或自定義類對象映射到JSON中 
用JSON取代XML 
免費,開源許可協議 
4 Server-Side: Java 
4.1 WebORB for Java (2005年8月) 
WebORB for Java是一個開發AJax和基於Flash的富客戶端應用程序的開發平台。在線例子

WebORB包括一個富客戶端開發類庫。提供簡單的在線式API用來綁定或者調用任何Java對象、XML Web Services和EJB 
支持異步或同步的事件驅動 
不需要在服務端修改任何代碼,不需要自定義方法或屬性、變量等。不要求設計時指定代理等。 
同步調用不需要回調,異步調用需要一個回調方法。 
客戶端可以向服務端請求指定的活動方式,不需要任何編程就可以把處理結果輕易的轉變為狀態。 
提供一個特定API來處理數據庫查詢結果-服務器代碼能返回DataSet或者DataTable,而客戶端以一個類似於RecordSet的JavaScript對象來顯示這個結果。該對象提供檢索列名和行數據的方法。 
支持數據分頁技術。客戶應用程序能檢索頁面中的數據。 
支持以參數的方式返回所有服務期端數據類型,如primitives, strings, complex types, arrays, native .Net collections, remote references 
目前有兩個版本:標准版(免費),專業版(商業許可) 
4.2 Echo 2 (2005年3月) 
Echo 2允許你用純Java語言編寫AJax程序。 Demo. 

自動生成Html和Javascript代碼 
用XML在客戶端-服務端傳遞消息 
如果願意支持自定義Javascript組件 
開源協議(Mozilla Public License or GNU LGPL) 
4.3 Direct Web Remoting (DWR) (2005) 
Direct Web Remoting可以在Javascript代碼中直接調用Java方法的應用框架

類似於SAJax,可以把Javascript中的請求調用轉遞到Java方法中並將執行結果返回給Javascript 
可以和任何Web框架一起使用,如Struts、Tapestry等等 
開源(apache),目前該產品被加入到WebWork中 
4.4 SWATO (2005) 
SWATO是一套可重用的和良好集成的Java/JavaScript庫,它實現了一種更容易的方式來改變你的web應用程序的交互,通過AJax方式實現。

服務端Java庫可以非常容易的部署到所有Servlet2.3+兼容的容器中 
客戶端Javascript庫可以在所有支持XMLHttpRequest的浏覽器中使用 
使用JSON技術在服務端組織POJO數據,這樣你可以在任何Javascript環境中(Html、XUL、SVG)訪問這些遠程數據,這種方式很容易通過硬編碼或者某種成熟的Javascript庫集成到當前應用中 
提供一個簡單接口使你能在Javascript中調用遠程的POJO數據 
使用<servlet>和<filter>靈活的在web.XML中進行配置,並且可以集成(不是必須)到你的Spring框架中 
提供了幾個可幫助你快速開發web應用程序的組件(如自動完成的文本框,在線表單,在線列表等等) 
4.5 AJax JSP Tag Library 
The AJax JSP Tag Library是一組JSP標簽庫,用來AJax程序開發。可以在J2EE下無需Javascript就能輕松開發AJAX模式的Web Form。標簽庫為比較通用的AJax功能提供了5個標簽:

autocomplete: 用戶在文本框中輸入字符,自動從指定的數據中匹配用戶輸入的字符,類似於Google Suggest 
callout:可以為A標簽加入氣泡式的消息提示框,不過是實時的服務端取出數據 
Select/dropdown:類似於聯動菜單,比如地州市的聯動下拉框 
toggle:開關閘按鈕,比如在一個hidden表單域中存儲true和falsh,同時顯示相應的img圖像 
update fIEld:更新數據,也就是無刷新提交了。 
4.6 AJax Java Server Faces Framework 
The AJAX-JSF用來把任意的JSF應用程序轉變為AJax應用程序

例子:AJax組件的 MyFaces JSF Tree(樹型目錄), table scroller(可滾動的表格), tabbed pane(分頁欄) 
開源協議(apache Software License) 
Server-Side: Lisp 
5.1 CL-AJax 
CL-AJax實現Javascript直接調用服務端Lisp

生成可帶參數的函數 
可以回調Javascript函數或者DOM對象 
可以集成到SAJax中 
開源許可 
6 Server-Side: .Net 
6.1 WebORB for .Net (2005年8月) 
WebORB for .NET是一個用.Net和XML Web Services方式開發AJax和基於Flash的富客戶端應用程序(在線例子) 

WebORB包括一個富客戶端開發類庫。提供簡單的在線式API用來綁定或者調用任何.Net對象、XML Web Services 
支持異步或同步的事件驅動 
不需要在服務端修改任何代碼,不需要自定義方法或屬性、變量等。不要求設計時指定代理等。 
同步調用不需要回調,異步調用需要一個回調方法。 
客戶端可以向服務端請求指定的活動方式,不需要任何編程就可以把處理結果輕易的轉變為狀態。 
提供一個特定API來處理數據庫查詢結果-服務器代碼能返回DataSet或者DataTable,而客戶端以一個類似於RecordSet的JavaScript對象來顯示這個結果。該對象提供檢索列名和行數據的方法。 
支持數據分頁技術。客戶應用程序能檢索頁面中的數據。 
支持以參數的方式返回所有服務期端數據類型,如primitives, strings, complex types, arrays, native .Net collections, remote references 
目前有兩個版本:標准版(免費),專業版(商業許可) 
6.2 AJax.Net (2005年3月) 
AJax.NET是首家支持各種方式通過Javascript訪問服務端.Net的免費庫

類似於SAJax,能把Javascript請求發送到.Net方法,服務端回傳給Javascript,甚至包括串行化自定義類。 
可以在Javascript中訪問Session和Application數據 
緩存查詢結果 
免費使用源代碼 
無需更改源代碼,允許給AJax.Net添加和修改方法和屬性 
所有類支持Javascript客戶端返回數據,可以在JavaScript中使用DataSet:res.Tables[0].Rows 
使用HtmlControls組件訪問和返回數據 
頁面無需重載,用事件代理(數據訪問層) 
因為只提供一個調用接口方法,所以服務端CPU占用非常少 
6.3 ComfortASP.Net (2005年8月) 
ComfortASP.NET可以讓開發者在純.Net下開發類似AJax(DHtml,JavaScript,XMLHttp)特性的應用程序。

快速應答 
減少Html傳輸 
減少頁面重載 
無閃爍的浏覽器內容更改 
AJax用戶體驗, 
6.4 AJaxASPects (2005年8月) 
AJaxASPects是個可以用Javascript調用服務端WebService事件的引擎

用標准的SOAP和WSDL進行服務端-客戶端通信 
用簡單的類型和XML對象支持帶參數的返回值 
緩存支持 
動作隊列 
免費使用,開源協議 
7 Server-Side: PHP 
7.1 AJaxAC (2005年4月) 
AJaxAC用一個單獨類封裝了完整的應用程序功能

所有的功能集成在自包含的類中(另外附帶一些Javascript庫) 
調用PHP文件或者Html頁面非常簡易,只需創建App類後把類引用傳遞給需要調用的Javascript對象或者Html元素即可。 
捕獲Javascript事件 
可以自定義配置數據,並且支持運行時參數更改 
無需再Javascript代碼中夾雜凌亂的Html代碼,所有事件都是被動態附加上的 
由於以上兩個優點,所以支持良好的模版引擎 
容易Hook到PHP類和MySQL數據已返回給自己的request 
能夠容易的用Javascript建立窗口模式應用程序。 
7.2 JPSpan 
JPSPAN通過Javascript直接調用PHP中的函數。

進行了嚴謹的單元測試 
開源許可(PHP) 
7.3 XAJax 
XAJax通過Javascript直接調用PHP中的函數

支持用Javascript調用PHP腳本 
開源許可協議 
8 Server-Side: Ruby 
8.1 Ruby On Rails 
Ruby On Rails是一個支持AJax的完整Web框架,使用Ruby語言編寫,嚴格按照MVC結構開發。

當Ajax出現的時候Rails還處於其發展的早期,因此AJax可能逐漸成為Rails框架的核心。 
生成浏覽器中大多數/全部的Window應用組件和動畫的Javascript腳本。 
支持服務器端調用。 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved