使用 Ajax,您可以轻而易举地即时向用户提供反馈,而不必再耗费大量时间重新载入用户所使用的页面。本文将带领您发现视图和代理如何帮助您构建 Ajax 驱动的应用程序,并教您如何定义一个 API,使客户机和 Domino 服务器协作。
每个人都曾经使用过某种类型的 To Do 列表系统。此类系统通常包含一些必须快速、易用的数据小段。To Do 列表也是演示 Asynchronous JavaScript and XML(Ajax)技术与 Lotus Domino 的完美范例,本文将为您介绍如何使用 Ajax 设计模式来构建一个名为 ToDo-list 的 Lotus Notes 应用程序,此应用程序为用户提供其任务的即时反馈和更新。
本文为您介绍整个 ToDo-List 应用程序的创建过程,还提供了示例应用程序的下载,以帮助您按文章逐步操作。应用程序使用 Domino 代理来处理 Web 浏览器发送的 Ajax 请求,如创建和更新 Notes 文档,还使用了一个 Domino 视图来生成应用程序中使用的 XML。本文的目标读者为具备 JavaScript 和 XML 知识、有一定经验的 Notes/Domino 应用程序开发人员。
如需了解 Ajax 的更多内容,请参见本文 “参考资料” 一节,获得介绍性文章。
ToDo-list 应用程序维护一份 To Do 项目的记录,各项包含 Subject 和 Status 字段。Subject 字段保存关于各项目是什么的信息(如图 1 所示),Status 字段包含一个 0 或 1,0 表示未完成的活动,1 表示已完成活动。
图 1. Ajax 驱动的 ToDo-list 应用程序

Ajax 驱动的应用程序的力量
Ajax 驱动的应用程序可增加任何基于 Web 的应用程序的实用性,由于其额外的安全性和分类化的视图,Lotus Domino 服务器为富客户机应用程序提供了出色的存储库。
Lotus Domino 提供的设计元素使得在 Domino 平台上开发 Ajax 解决方案变得极为简单。可轻松构建支持会话(出于安全性和个性化方面的考虑)的 Domino 代理来处理您的 Ajax 提交。此外,您可配置一个 Domino 视图来提供 HTML、XML 甚至 JavaScript Serialized Object Notation(JSON)。成功的 Ajax 实现所需的一切都有。
现代 Web 浏览器和成熟的 Document Object Model(DOM)使为用户创建功能丰富的应用程序比以往任何时候都要容易。例如,我们通常会在项目中包含提前键入或建议字段,用户键入时可在其中接收到建议,以使名称查找更为方便。在另外一个项目中,我们载入了一个带有小对话框的门户页面(即 <DIV>)。各 <DIV> 使用 Ajax 调用在后端进行填充。部分对话框每隔 30 秒自动更新,为管理者提供来自 Enterprise Resource Planning(ERP)系统的新信息。
第三个示例是另外一个门户项目,其中各对话框的标题栏中带有一个小小的 “Add to my page” 图标。当用户单击此图标时,一个请求将在后台发往服务器,其中带有用户希望订阅的对话框的相关信息。服务器以如下两条消息之一:“The box is now on your personal page” 或 “You have that box already!” 进行响应。
在所有这些应用程序中,我们都必须从指定 API 入手。指定不当的 API 会毁掉整个项目。
API
在您开始为 ToDo-List 应用程序编码之前,必须决定客户机和服务器间传输的信息格式。您的系统架构可选择其所需的任意交换格式,但近来这种格式通常是 XML、JSON 或简单文本。
XML、JSON 或简单参数
为使两台计算机能够彼此通信,您必须设置一个定义良好的规则,以便使发送方和接收方都能了解如何去处理每一段信息。这些规则可以复杂、详尽而灵活,也可以简明扼要且易于采纳。
如果可随意选择格式,我们建议您优先考虑可读性和完整性,其次才是维持小规模和低开销。可选格式如下(见表 1 给出的归纳):
XML。XML 格式极为适合结构化和定义良好的数据,在这种情况下,服务器和客户机都完全了解数据的形式。但 XML 略显冗长,较老的浏览器的 XML 实现还有一些古怪的规范。幸运的是,那些古怪的规范不会影响本文中介绍的现代 Ajax 驱动的示例。 HTML。HTML 极为适合从服务器将数据发送到 Web 浏览器以便直接呈现,与 XML 比较时,其优势更为明显,使用 XML 时,客户机必须首先将内容转换为 HTML,然后才能呈现内容。在浏览器必须分析数据并对其作出反应时,不建议使用 HTML。 JSON。JSON 对于人类来说可读性较好,同时规模小,开销低。对于 JavaScript 语言来说,JSON 是本地的,但需要在 Java 服务器端进行额外的编码工作。 CSV。Comma-Separated Value(CSV)或许是最常用也经过最充分验证的两系统间数据交换方法。有些人甚至争辩说 CSV 适于人类阅读,但我们不支持这种观点。CSV 没有完整性检查,但也没有任何开销。 Text。为信息交换使用纯文本是恰当的,例如,在 URL 这样的值对组合中。表 1. 用于信息交换的不同格式概述
| XML | JSON | HTML | CSV | Text | |
| 开销 | 重 | 中 | 重 | 非常轻 | 中 |
| 完整性检查 | 非常好 | 非常少 | 无 | 无 | 无 |
| 人类可读性 | 好 | 中 | 好 | 不可能 | 好 |
在本文的示例中,您将为发送到后端系统的请求使用文本格式,为响应使用 XML 格式。您也需要花费一点时间和精力来定义 XML。这并不像定义另外一个可放在纯 Lotus Notes 环境中的字段那样容易。
定义 XML 格式
在本文稍后部分,您将定义客户机可向服务器发送的方法。但现在,您必须确定要使用那种 XML 方言来定义一个或多个 To Do 项目。ToDo-list 应用程序中的各 To Do 项目包含 3 个值:key、subject 和 status。key 是保存您的 To Do 项目的 Lotus Notes 文档的 Universal ID(UID)。subject 只是用户希望执行的任务或活动。status 为 0 或 1,0 表示未完成的任务,1 表示已完成的任务。
在本示例中,服务器通过一个更新的项目列表响应所有调用。在实际环境中,响应更多地连接到服务器执行的活动。本例的下一步不仅包括回发更新的项目列表,还包括提供状态信息,以使客户机了解服务器进行了怎样的操作,如以下代码清单所示。
<response>
<response status></response status>
<document>
<key></key>
<subject></subject>
<status></status>
</document>
<document>
<key></key>
<subject></subject>
<status></status>
</document>
</response>现在,设置好 API、交换格式和 XML 标准后,即可开始开发服务器端功能了。此后,即可将精力集中在客户端代码。但在着手处理任一任务之前,您必须确定服务器将对您的文档执行怎样的操作。
创建客户机到服务器的调用
客户机上生成的各调用必须包含一个 action 参数,以使服务器了解执行怎样的活动。有时,还有必要发送额外的参数 —— 例如,若您希望来回切换一个项目的状态。在此类情况下,活动为 ToggleStatus,额外参数必须包含关于要为哪个文档来回切换状态的相关信息,以使 Domino 服务器可在正确的文档上执行正确的活动。
来自客户机的所有调用都是使用带有一些 URL 参数的 HTTP GET 方法完成的。下例是一个包含 method 和 key 参数名的完整 URL。
http://host/ibm/ajaxdemo.nsf/AjaxHandler?open&method=deleteDocument&key=88877766fefe5678
服务器应处理怎样的活动?
在您的 API 中,一个 Web 页面可能使用许多种不同的方法 —— 例如,createDocument、updateDocument、deleteDocument、getDocument 和 toggleStatus。各方法接受一个或多个参数。创建、更新、删除和切换状态活动均更改数据库中的信息,这样的更改必须反映在 Web 页面的 To Do 项目中。反映此更改的方法之一就是每次在数据库中进行更改时使客户机执行一个额外的请求,来获得项目列表。更好的解决方案就是设置代理,每次调用代理时即返回更新的 To Do 列表(本文稍后将介绍更多详细内容)。
服务器必须对表 2 所示定义好的活动作出反应。
表 2. 定义好的活动
| 方法 | 用途 | 参数 | 返回结果 |
| CreateDocument | 创建一个新的 Lotus Notes 文档,并使用所提供的数据填充其字段 | 字段列表,各字段参数包括字段名、类型和值 | 包含所有项目的 XML 对象 |
| UpdateDocument | 通过提供文档标识符、字段名和要更改的值请求更新 | 文档惟一的 ID 和一个字段参数。字段参数包括字段名和新字段值 | 包含所有项目的 XML 对象 |
| Dele
在百度中搜索更多使用 Ajax 操纵 Lotus Notes 文档相关网页 转贴于:中国下载站
【中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页】 相关文章
文章评论(评论内容只代表网友观点,与本站立场无关!)
栏目导航
分类广告
热门文章
|