如何在Ajax请求和响应中使用XML(1)(2)
尽管可以 将服务器的 XML 格式的响应视同为其他任何文本响应来处理,但这样做没有很好的理由。首先,如果您一直忠实地阅读这个系列,那么您已经学会了如何使用 DOM 这种对 JavaScript 友好的 API 来操纵 XML。还有更好的事情,JavaScript 和 XMLHttpRequest 对象提供了一个属性,它能完美地获取服务器的 XML 响应,并且是以 DOM Document 对象的形式来获取它。
清单 6给出了一个实例。这段代码与清单 4类似,但没有使用 responseText 属性,回调函数使用的是 responseXML 属性。该属性在 XMLHttpRequest 上可用,它以 DOM 文档的格式返回服务器的响应。
清单 6. 将 XML 当作 XML
function updatePage() {
if (request.readyState == 4) {
if (request.status == 200) {
var xmlDoc = request.responseXML;
// work with xmlDoc using the DOM
}
}
}
|
现在您有了一个 DOM Document,可以像处理其他任何 XML 一样处理它。例如,随后可能要获取所有 show 元素,如清单 7所示。
清单 7. 获取所有 show 元素
function updatePage() {
if (request.readyState == 4) {
if (request.status == 200) {
var xmlDoc = request.responseXML;
var showElements = xmlDoc.getElementsByTagName("show");
}
}
}
|
如果您熟悉 DOM,从这儿开始,看起来就应该有几分熟悉了。您可以使用您所了解的全部 DOM 方法,轻松操纵从服务器处接收到的 XML。
当然,您也可以混用普通的 JavaScript 代码。例如,可以遍历所有 show 元素,如清单 8所示。
清单 8. 遍历所有 show 元素
function updatePage() {
if (request.readyState == 4) {
if (request.status == 200) {
var xmlDoc = request.responseXML;
var showElements = xmlDoc.getElementsByTagName("show");
for (var x=0; x |
通过这段非常简单的代码,您正是将 XML 响应作为 XML 而不是无格式的纯文本进行了处理,还使用了一点 DOM 和简单的 JavaScript 来处理服务器响应。更重要的是,您使用了标准化的格式 ―― XML,而不是以逗号分隔的值或以竖线分隔的名称/值对。换句话说,您将 XML 用在了最适合它的地方,避免了在不适合的地方使用它(比如说向服务器发送请求时)。
服务器端的 XML:一个简单的示例
我不会谈太多有关如何在服务器上生成 XML 的内容,但花点儿时间看一个简单的示例是值得的,我没有给出过多的注释,以便您自行思考如何应对这样的场景。清单 9展示了一个简单的 PHP 脚本,假设有一个异步客户机发出了请求,该脚本将输出 XML 来应答此请求。
这是一种强力(brute force)的方法,PHP 脚本实际上是手动生成 XML 输出。您可以找到许多工具包和 API,用于 PHP 和其他众多允许您生成 XML 响应的服务器端语言。无论您的情况如何,这都至少能让您了解生成 XML 并以之应答请求的服务器端脚本看上去是什么样子。
清单 9. 返回 XML 的 PHP 脚本
"; echo " |
您应能够使用您偏爱的服务器端语言以类似的方式输出 XML。IBM developerWorks 上有许多文章可以帮助您了解如何使用您喜爱的服务器端语言生成 XML 文档。
解释 XML 的其他可选方法
除将 XML 作为无格式文本处理或使用 DOM 处理之外,还有一种非常流行的选择很重要,值得一提。那就是 JSON(JavaScript Object Notation),这是一种绑定在 JavaScript 内的自由文本格式。这篇文章中没有足够的空间介绍 JSON,在后续文章中将探讨相关内容;只要提起 XML 和 Ajax 应用程序,您就很可能会听到有人谈论 JSON,因此现在我将告诉您,您的工作伙伴们在谈论的究竟是什么。
大体上,可以用 JSON 做的事,用 DOM 都可以完成,反之亦然;选择主要取决于偏好,当然也要为特定的应用程序选择正确的方法。就现在而言,您应坚持使用 DOM,在接收服务器响应的过程中熟悉 DOM。
结束语
从上一篇《在Ajax开发中如何恰当使用XML》的文章开篇起,几乎一直在谈论 XML,但对于 XML 在 Ajax 应用模式中的贡献而言,我触及的依然仅仅是表面。
简而言之,最重要的任务就是思考对于您的应用程序,XML 在什么时候才是有意义的。在很多情况下,如果您的应用程序工作良好,XML 只不过是又一个让您头疼的技术时髦词汇,您应该克制住仅仅为了宣称应用程序中有 XML 而尝试它的冲动。
如果您处于这样一个环境中:服务器向您发送的数据非常有限,或者采用的是奇怪的逗号分隔、竖线分隔的格式,那么 XML 可能会给您带来真正的收益。考虑处理或更改您的服务器端组件,以使它们用更为标准化的方式 ―― 使用 XML ―― 来返回响应,而不是使用那些健壮性比 XML 差的专用格式。
最重要的是,要认识到,您对 Ajax 相关技术了解的越多,就必须越谨慎地制定决策。编写那些 Web 2.0 应用程序确实很有趣,但要注意,确保您不是为了向朋友炫耀而在一个可以正常工作的 Web 页面上滥用这些技术。
上一篇:《在Ajax开发中如何恰当使用XML》
(责任编辑:铭铭 mingming_ky#126.com TEL:(010)-68476636)






