作为 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. 创建的脚本、按钮和文本域