CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > WebService开发

在请求和响应中使用XML

作者: 佚名,  出处:IT专家网论坛, 责任编辑: 包春林, 
2008-08-06 04:00
  偶尔使用Ajax的开发人员也会注意到Ajax中的x并意识到它代表XML。XML是编程中最常用的数据格式之一,对于异步应用程序中的服务器响应能够带来切实的好处。在本文中,您将看到服务器如何在请求响应中发送XML。

  现在如果不使用XML就不能进行任何有意义的编程。无论考虑转向XHTML的网页设计人员、使用JavaScript的Web程序员、使用部署描述文件和数据绑定的服务器端程序员,还是研究基于XML的数据库的后端开发人员,都在使用这种可扩展标记语言。因此,XML被认为是Ajax底层的核心技术之一就不足为奇了。

  但是,这种观点反映到Ajax应用程序就表现在其核心对象所选的名称——XMLHttpRequest,这个名称不是很好,因为它并没有反映技术上的实际情况。换句话说,多数人之所以认为XML是Ajax的核心组成部分,仅仅是因为他们想当然地以为XMLHttpRequest对象在任何时候都使用XML。但实情并非如此,本文第一部分给出了原因。实际上,您将看到在多数Ajax应用程序中XML很少出现。

  XML确实有应用在Ajax中,而且XMLHttpRequest也支持这种用法。也确实没有什么能阻挡您向服务器发送XML。在本系列前面的文章中,我们使用普通文本和名/值参数发送数据,但XML也是一种可行的格式。本文将介绍如何来这样做。但最重要的是,我将讨论为何可以使用XML作为请求格式,以及为何在多数情况下不应该使用它。

  XML:到底用没用?

  对Ajax应用程序及它们使用XML的情况很容易犯想当然的错误:这种技术的名称(Ajax)及其使用的核心对象(XMLHttpRequest)都暗示了XML的使用,谈到Ajax应用程序的时候也经常听到XML。但是,这种观点大错特错,如果希望在编写异步应用程序时真正做到胸有成竹,必须知道这种想法是错误的,而且最好知道为什么错误。

  XMLHttpRequest:糟糕的名称和HTTP

  一项技术可能遇到的最糟的境况之一是它变得太炙手可热以至于无法再改变它的一些基本内容。XMLHttpRequest恰恰是这种情形,它是Ajax应用程序中使用的基本对象。听起来它似乎是为通过HTTP请求发送XML或者以某种XML格式发出HTTP请求而设计的。但不论这个对象的名称听起来像什么,实际上它要做的只不过是为客户机代码(在网页中通常是JavaScript)提供一种发送HTTP请求的方式。仅此而已,别无其他。

  因此,如果将XMLHttpRequest改成某种更准确的名称可能更好一些,比如HttpRequest,或者简简单单的Request。但是,现在成千上万的人在应用程序中使用了Ajax,而且我们知道需要几年时间(如果不是十几年的话)大部分用户才会改用Internet Explorer 7.0或Firefox 1.5这些新版本的浏览器,因此这么修改实际上是不可行的。最终我们不得不使用XMLHttpRequest,这就要求开发人员要知道其名不符实的这一事实。

  在一定程度上讲,对于不支持XMLHttpRequest的浏览器(特别是在Windows上)的最佳回溯方法之一就是使用Microsoft IFRAME对象。听起来可不像是XML、HTTP或请求,是不是?当然,所有这些都可能涉及到,但是这正清楚地说明了一点——XMLHttpRequest对象更多的是关于在不重新加载页面的情况发出请求,而不会太多地涉及XML甚至HTTP。

  请求是HTTP而非XML

  另一种常见的错误是认为XML在幕后使用——坦白地说,我也曾这么认为!但是,持这种观点表明您对这种技术还不甚了解。当用户打开浏览器从服务器上请求网页时,会输入http://www.google.com或者http://www.headfirstlabs.com这样的东西。即便不输入http://,浏览器也会在地址栏的这部分加上。第一部分,即http://,是关于如何通信的很直观的线索:通过超文本传输协议HTTP。在网页中编写代码与服务器通信时,无论使用Ajax还是普通的表单POST,甚至超链接,打交道的都是HTTP。

  既然浏览器和服务器之间的所有Web通信都通过HTTP进行,认为XML是XMLHttpRequest幕后所用的某种传输技术的想法就毫无道理了。当然在HTTP请求中可以发送XML,但是HTTP是一个精确定义的协议,短时间内不可能消失。除了在请求中明确使用XML,或者服务器用XML发送响应之外,XMLHttpRequest对象使用的只是普普通通的HTTP。因此,当再有人对您说 “哦,称为XMLHttpRequest是因为在幕后使用XML”的时候,您最好一笑了之,并耐心地解释什么是HTTP,告诉他们虽然XML可以通过HTTP发送,但XML是一种数据格式而不是传输协议。通过这样的讨论,加深对它的理解。

  使用XML(真正)

  到目前为止,我说的只是Ajax在哪些地方不使用XML。但Ajax中的x和XMLHttpRequest中的XML仍然有其实际意义,在Web应用程序中使用XML有多种选择。这一节将讨论基本的选择,剩下的部分再深入探讨细节问题。

  XML选项

  在异步应用程序中XML有两种基本的用法:

共6页。 1 2 3 4 5 6 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i