如何在Domino上使用Ajax 架構Dojo

來源:互聯網
上載者:User

作為 Domino 開發人員,瀏覽器應用的開發是其中重要的一部分。而瀏覽器應用開發方面會有許多新的技術和方法出現。如何將這些新的技術和方法運用到 Domino 環境中是 Domino 開發人員需要面對的一個重要問題。

目前,我們正處於在 Web 2.0 的時代,在這個偉大的時代出現了大量的瀏覽器技術,其中有代表性的就是 Ajax。通過 Ajax,我們可以讓用戶端在不重新整理網頁的情況下與伺服器交換資料,從而產生真正動態網頁。對 Ajax 的使用包括一定的低層編碼工作,為了簡化這一工作,人們提出了 Ajax 架構的概念,將 Ajax 相關的低層編碼封裝起來,裝配成簡單易用的小工具。而 Dojo 則是 Ajax 架構中極為優秀的一個。

本文並不會詳細地介紹 Ajax 與 Dojo,有關 Ajax 與 Dojo 的具體內容請參考 相關資源。同時,本文也不會詳細介紹 Domino 的設計方法,本文的讀者需要對 Domino 開發有一定的經驗。本文主要是介紹如何在 Domino 環境中使用 Dojo 這一架構,並將 Dojo 與 Domino 的設計項目結合起來。

Ajax 與 Dojo 介紹

Ajax 的英文全名是: Asynchronous JavaScript and XML,中文意思就是“非同步JavaScript 和 XML”。其中 JavaScript 用於前台處理,XML 用於前台與背景資料傳遞。之所以稱之為“非同步”,是因為 Ajax 使用了非同步方式與伺服器互動,當前台處理的JavaScript 向後台發送完資料請求後,程式控制權會返回給 JavaScript。當伺服器在後台對請求進行響應的時候,前台的JavaScript 可以繼續運行,執行其它操作。當伺服器端處理完請求並返回結果後,會在前台觸發事先指定的方法,通過這一方法對返回結果進行處理。

Ajax 所擁有的這種非同步通訊能力在低層而言得益於一個新的JavaScript 對象:XmlHttpRequest。它的核心功能是向指定的伺服器發送一個 HTTP 要求,同時指定一個 JavaScript 方法作為回呼函數。當這個 HTTP 要求被發送後,當前網頁不需要被重新整理。同時,雖然被指定的回呼函數會等待伺服器的處理結果,但是前台的JavaScript 可以繼續工作,響應使用者在前台的其它操作。

使用 Ajax 技術,開發人員需要建立 XmlHttpRequest 對象,並實現回呼函數。如果在每一個需要的網頁元素上都實現這樣細節,會有很大工作量,同時代碼也不易管理。在這種情況下,人們提出的Ajax 架構的概念,通過 Ajax 技術實現了大量實用的小工具,開發人員只需要調用小工具就可以和伺服器進行非同步互動。

在 Ajax 架構中,Dojo 是其中極為優秀的一個。Dojo 是一個開源項目,雖然在 Dojo 的首頁上,他們只是把 Dojo 定義成一個開源的DHTML 項目,但是它無疑是一個充分發揮 Ajax 優勢的架構。

在 Domino 上實現最基本的Ajax 調用

因為 Domino 是一個完整的HTTP 伺服器,在不添加其它架構的情況下,開發人員都可以在 Domino 環境裡通過編寫代碼實現 Ajax 調用,從而實現複雜的非同步應用。為了讓讀者集中瞭解在 Domino 上實現 Ajax 調用的關鍵,下面用最簡單的例子進行說明。

首先,為了測試需要,我們在測試伺服器上建立一個測試資料庫,名為:ajaxsample.nsf。 然後,在該資料庫建立一個表單,名為:SampleAJAX。此外,在同一資料庫建立一個頁面名為 samplepage,裡面輸入文本“testing page”作為內容。我們將在表單 SampleAJAX 裡實現 Ajax 調用,在不重新整理當前頁面的情況下動態擷取頁面“samplepage”的內容。

在表單 SampleAJAX 中的“JS Header”事件中輸入如下代碼:

清單 1. Ajax 調用返回資料的代碼

var oXHR;
function mycallback() {
 if (oXHR.readyState == 4) {
   if (oXHR.status == 200) {
    alert(oXHR.responseText);
   } else {
    alert('error');
   }
 }
}

然後在表單中建立一個按鈕和一個可編輯的文本域,按鈕用於觸發 Ajax 調用,可編輯的文本域用於證明當前頁面是否被重新整理。完成以上步驟後的結果如下圖所示:

圖 1. 建立的指令碼、按鈕和文本域

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.