DIV CSS 佈局教程網

AJAX框架匯總
編輯:AJAX詳解     

1. Pure Javascript: Application Frameworks

1.1 Bindows (成立於2003年)

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

Bindows框架提供的功能和特性有:
  • 基於面相對象技術的類和API
  • 一套完整的Windows桌面系統,支持各種特性窗口模式,包括菜單、表單、表格、滑動條、測量儀器窗口和其他一些Windows窗口特性支持。
  • 是開發zero-footprint(零空間占用)SOA客戶端應用程序首選工具包
  • 本機的XML,SOAP和XML-RPC支持
  • 單用戶到企業級開發的支持
  • 內建的完美的Javascript:void(0);">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),由JotSpotAlex Russell所領導。

1.4 Open Rico (開發中;成立於2005年5月;基於早期的一個proprIEtary 框架)

Open Rico是一個支持AJax架構和用戶交互的多用途框架。

  • 一個XMLHttpRequest response能被一個或多個的DOM對象,或者Javascript對象調用。
  • 支持拖拽操作
  • 支持基於Javascript:void(0);">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自稱是企業級Javascript:void(0);">AJax。

  • 遠程腳本調用封裝在XMLHttpRequest中
  • URI支持
  • 支持所有的HTTP事件,不再僅僅是GET和POST
  • 低級的協議-File://和WebDav也可以當作HTTP正常使用
  • Web Services調用支持,包括SOAP、XML-RPC等等
  • 大型的Javascript對象庫
  • 多種多樣的XML操作支持
  • IDE和開發工具
  • 開源協議(OSI)

1.7 AJFORM (創建於2005年6月)

AJFORM是一個極易上手的Javascript:void(0);">AJax框架,被用來編寫入門級的Javascript:void(0);">AJax代碼,提供有以下功能:

  • 三步安裝
  • 自動支持任意Html表單元素
  • 幾乎無需編碼即可實現Javascript:void(0);">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來實現最大限度的跨浏覽跨平台的Javascript:void(0);">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定位在浏覽器中支持各種各樣的Javascript:void(0);">AJax基礎應用的開源項目。自稱是通過Javascript、CSS、XML和Html實現高性能的交互式WEB框架,包括一個可定制易讀的XML解析器。實際上,IWF是一個Javascript:void(0);">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腳本的Javascript:void(0);">AJax和JSRS工具包。CPAINT在後台提供你需求的Javascript:void(0);">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是一個開發Javascript:void(0);">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語言編寫Javascript:void(0);">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應用程序的交互,通過Javascript:void(0);">AJax方式實現。

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

4.5 Javascript:void(0);">AJax JSP Tag Library

The Javascript:void(0);">AJax JSP Library是一組JSP標簽庫,用來Javascript:void(0);">AJax程序開發。可以在J2EE下無需Javascript就能輕松開發Javascript:void(0);">AJax模式的Web Form。標簽庫為比較通用的Javascript:void(0);">AJAX功能提供了5個標簽: Tag Library

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

4.6 Javascript:void(0);">AJax Java Server Faces Framework

The Javascript:void(0);">AJax-JSF用來把任意的JSF應用程序轉變為Javascript:void(0);">AJax應用程序

  • 例子:Javascript:void(0);">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方式開發Javascript:void(0);">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月)

.NET是首家支持各種方式通過Javascript訪問服務端.net的免費庫 AJax.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下開發類似Javascript:void(0);">AJax(DHtml,JavaScript,XMLHttp)特性的應用程序。

  • 快速應答
  • 減少Html傳輸
  • 減少頁面重載
  • 無閃爍的浏覽器內容更改
  • Javascript:void(0);">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是一個支持Javascript:void(0);">AJax的完整Web框架,使用Ruby語言編寫,嚴格按照MVC結構開發。

  • 當Ajax出現的時候Rails還處於其發展的早期,因此AJax可能逐漸成為Rails框架的核心。
  • 生成浏覽器中大多數/全部的Window應用組件和動畫的Javascript腳本。
  • 支持服務器端調用。
  • 隊列支持
  • 開源許可
From MoztwWiki
本文章為 Mozilla Developer Center 的 Javascript:void(0);">AJax:Getting Started (http://developer.mozilla.o... 的翻譯。原文的作者與編修歷史可在它的歷史頁 (http://developer.mozilla.o... action=history)上看到。

這篇文章說明 Javascript:void(0);">AJax 相關技術的基礎,並提供實例供您上手。




Javascript:void(0);">AJax 是啥?



Javascript:void(0);">AJax (Asynchronous JavaScript and XML, 異步 Javascript 及 XML 技術) 是個新詞,但內涵是兩個存在已有一段時間的 JavaScript 功能。這兩種功能以往一直被忽略,在 Gmail、Google suggest 及 Google Maps 出現後才一舉成名天下知。

這兩個 JavaScript 功能 是:

   * 在不重新讀取頁面的情況下對伺服器送出要求(request)
   * 解析、使用 XML 文件



第一步 – 怎麼發出 XMLHttpRequest



為了用 JavaScript 對伺服器發送 HTTP 要求,你必須先以相關的類別(class)制出實體(instance)。Internet Explorer 首先以 ActiveX 物件方式提供 XMLHTTP 類別,而 Mozilla、Safari 及其他浏覽器則隨後以 XMLHttpRequest 類別支援此 ActiveX 物件中的類別及屬性。

因此,如果想跨浏覽器,那麼可以這麼寫:

if (window.XMLHttpRequest) { // Mozilla, Safari, ...
   http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
   http_request = new ActiveXObject("Microsoft.XMLHTTP");
}

(由於這段程式僅供說明,所以是采最簡方式寫出。本文第三步中有另一種我們比較常用的寫法。)

有些版本的 Mozilla 浏覽器在伺服器送回的資料未含 XML mime-type 檔頭(header)時會出錯。為了避免這個問題,你可以用下列方法覆寫伺服器傳回的檔頭,以免傳回的不是 text/XML。

http_request = new XMLHttpRequest();
http_request.overrideMimeType('text/XML');

接下來是要決定伺服器傳回資料後的處理方式,此時你只要以 onreadystatechange 這個屬性指明要處理傳回值的 JavaScript 函式名稱即可,例如:

http_request.onreadystatechange = nameOfTheFunction;

注意,指定的函式名稱後不加括號也沒有參數。除了指定函式名稱外,你也能用 Javascript 即時定義函式的方法來定一個新的處理函式,如下:

http_request.onreadystatechange = function(){
   // 做些事
};

決定處理方式之後你得確實發出 request,此時需叫用 HTTP request 類別的 open() 及 send() 方法,如下:

http_request.open('GET', 'http://www.example.org/some.file', true);
http_request.send(null);

   * open() 的第一個參數是 HTTP request 的方法,也就是從 GET、POST、HEAD 中擇一使用,亦可用你主機上支援的方式。為遵循 HTTP 標准,請記得這些方法都是大寫,不然有的浏覽器(如 Firefox)或許不會理你。其它 HTTP request 可以支援的方法列表請參考 W3C 規格書 (http://www.w3.org/Protocol...。
   * 第二個參數是目標 URL。基於安全考量,你不能叫用同網域以外的網頁。如果網域不同,則叫用 open() 時會出現「權限不足,拒絕存取」那類的錯誤。通常大伙會犯的錯誤多為在 domain.tld 網的網站下呼叫 www.domain.tld 中的網頁,僅是一點點差別都不行。
   * 第三個參數決定此 request 是否不同步進行,如果設定為 TRUE 則即使伺服器尚未傳回資料也會繼續執行其余的程式,這也就是 Javascript:void(0);">AJax 中第一個 A 代表的意義。

send() 的參數在以 POST 發出 request 時可以是任何想傳給伺服器的東西,而資料則以查詢字串的方式列出,例如:

name=value&anothername=othervalue&so=on

不過如果你想要以 POST 方式傳送資料,則必須先將 MIME 型態改好,如下:

http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

否則伺服器就不會理你傳過來的資料了。


第二步 – 處理伺服器傳回的資料



傳出 request 時必須提供處理傳回值的函式名稱。

http_request.onreadystatechange = nameOfTheFunction;

那麼來看看這個函式該做些什麼。首先,它必須檢查 request 目前的狀態:如果狀態值為 4 代表伺服器已經傳回所有資訊了,便可以開始解析所得資訊。

if (http_request.readyState == 4) {
   // 一切 ok, 繼續解析
} else {
   // 還沒完成
}

readyState 所有可能的值如下:

   * 0 (還沒開始)
   * 1 (讀取中)
   * 2 (已讀取)
   * 3 (資訊交換中)
   * 4 (一切完成)

(資料來源: MSDN (http://msdn.microsoft.com/...

接下來要檢查伺服器傳回的 HTTP 狀態碼。所有狀態碼列表可於 W3C 網站 (http://www.w3.org/Protocol...上查到,但我們要管的是 200 OK 這種狀態。

if (http_request.status == 200) {
   // 萬事具備
} else {
   // 似乎有點問題,或許伺服器傳回了 404 (查無此頁) 或者 500 (內部錯誤) 什麼的
}

檢查傳回的 HTTP 狀態碼後,要怎麼處理傳回的資料就由你決定了。有兩種存取資料的方式:

   * http_request.responseText – 這樣會把傳回值當字串用
   * http_request.responseXML – 這樣會把傳回值視為 XMLDocument 對象,而後可用 JavaScript DOM 相關函式處理


第三步 - 萬事俱備 - 簡單范例



好,接著就做一次簡單的 HTTP 范例,演示方才的各項技巧。這段 JavaScript 會向伺服器要一份裡頭有「I'm a test.」字樣的 HTML 文件(test.Html),而後以 alert() 將文件內容列出。


   style="cursor: pointer; text-decoration: underline"
   >
       Make a request


在此范例中:

   * 首先使用者按下「Make a request」
   * 這麼一來就會呼叫 makeRequest() 函式,亦傳入參數值 test.html (也就是那份 Html 檔的名稱,放在同目錄下)
   * 接著發出 request,而後會將主導權交給 onreadystatechange 指定的 alertContents() 函式
   * alertContents() 檢查回應是否正常,而後以 alert() 將 test.Html 的內容列出

你可以由此測試本例 (http://www.w3clubs.com/moz...,也可以參考測試檔案 (http://www.w3clubs.com/moz...。


第四步 – 處理 XML 回應值



前面的例子中,在收到 HTTP 傳回值後我們以物件的 reponseText 屬性使用 test.Html 檔案的內容,接著來試試 responseXML 屬性的方法。

首先,我們得做個格式正確的 XML 文件,以便稍後取用。此檔名喚 test.XML,內容如下:

<--l version="1.0"-->

   I'm a test.


在程式中,我們叫用檔案的地方只須略事修改如下:

...
>
...

接著在 alertContents() 中,我們必須將 alert(http_request.responseText); 改成這樣:

var xmldoc = http_request.responseXML;
var root_node = XMLdoc.getElementsByTagName('root').item(0);
alert(root_node.firstChild.data);

這樣一來我們便可取得 responseXML 所傳回的 XMLDocument 對象,而後以 DOM 相關的方法取用 XML 文件內容。你可以參考 test.XML 的原始碼 (http://www.w3clubs.com/moz... 以及修改過後的測試程式 (http://www.w3clubs.com/moz...。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved