本文的大部分内容将主要介绍 Ajax 应用程序中通常使用的与 XML 相关的 API。在客户端,XML API 的作用虽非常有限,但已够用。在多数情况下,利用 XMLHttpRequest 即可完成所有必需操作。此外,还可使用 JavaScript 在 Web 浏览器中分析 XML 文档并串行化 DOM 树。在服务器端,可用于处理 XML 文档的 API 和框架有很多种。本文将介绍如何使用针对 XML 的标准 Java API 来实施基本任务,该 API 支持 XML 模式、XPath、DOM 以及许多其他标准。
通过本文,您可以了解到在 Ajax 应用程序中实现数据交换所用的最佳技巧和最新的 API。其中涉及的示例代码分别位于以下三个程序包中:util、model 和 feed。util 程序包中的类提供了用于 XML 分析、基于模式的验证、基于 XPath 的查询、DOM 串行化以及 JSON 编码的方法。model 程序包包含的示例数据模型可用于从 XML 文档进行初始化,然后再转换至 JSON 格式。model 目录中还有一个 Schema 示例,可用于 XML 验证。feed 程序包中的类可用于模拟数据馈送,其通过 Ajax 每 5 秒检索一次来获得信息,以刷新 Web 页面。本文阐释了如何通过终止未完成的 Ajax 请求并在使用完 XMLHttpRequest 对象后将其删除,避免 Web 浏览器的内存泄漏。
web 目录中包含了 JSP 和 JavaScript 示例。ajaxUtil.js 中包含了发送 Ajax 请求、终止请求以及处理 HTTP 错误的实用函数。该文件还提供了可用于 XML 和 URL 编码、XML 分析以及 DOM 串行化的 JavaScript 实用程序。ajaxCtrl.jsp 文件充当 Ajax 控制器,接收每一个 Ajax 请求、转发参数至数据模型,或供给处理,然后返回 Ajax 响应。其余的 Web 文件都是演示如何使用该实用方法的示例。
在客户端构建请求
将数据发送至 Web 服务器的最简单方法是将请求编码为查询字符串,该字符串根据使用的 HTTP 方法,既可附加至 URL,也可包含在请求正文中。如果需要发送复杂的数据结构,更好的解决方案是将信息编码在 XML 文档中。我将在本部分中介绍这两种方法。
编码请求参数。开发传统 Web 应用程序时,无需担心表单数据的编码,因为 Web 浏览器会在用户提交数据时自动执行该操作。但是,在 Ajax 应用程序中,您必须亲自编码请求参数。JavaScript 提供了一个非常有用的函数 escape(),该函数用 %HH(其中 HH 是十六进制代码)替换任何无法成为 URL 一部分的字符。例如,任何空白字符都用 替换。
function buildQueryString(params) { var query = "". for (var i = 0. i < params.length. i ) { query = (i > 0 ? "&." : "") escape(params[i].name) "=" escape(params[i].value). } return query. }