跟“无为”学习Ajax技术第九天

第九天:在请求和响应中使用 XML
XML 选项:
在异步应用程序中 XML 有两种基本的用法:
(1)以 XML 格式从网页向服务器发送请求。
(2)以 XML 格式在网页中从服务器接收请求。

第一种用法,即用 XML 发送请求,需要将请求的格式设置为 XML,可以使用 API 来完成,也可以与文本连成字符串,然后将结果发送到服务器。按照这种思路,主要的任务就是通过既符合 XML 规则又能被服务器理解的方式构造请求。因此这里的关键实际上是 XML 格式,得到需要发送的数据之后,只需要用 XML 语法将其包装起来。
第二种用法,即用 XML 接收请求,需要从服务器上接收响应,然后从 XML 提取数据(同样,可以用 API 或者采用蛮力方法)。这种情况下,关键在于来自服务器的数据,而您恰好需要从 XML 中提取这些数据以便使用。
一点忠告:XML 不是一种简洁、快速和节省空间的格式。
看看哪些地方使 XML 增加了处理时间:将文本包装成 XML;发送额外信息(要注意我没有包含任何包围元素、XML 头或者可能出现在实际请求中的其他任何内容);让服务器解析 XML、生成响应、用 XML 包装响应,并将它发送回网页;让网页解析响应,最后使用它。因此要清楚什么时候使用 XML,不要一开始就认为它在很多情况下都能够加快应用程序;但,它可以增强灵活性。
从客户机到服务器的 XML:
我们来看看将 XML 作为从客户机向服务器发送数据的格式。
发送名/值对:在您编写的 90% Web 应用程序中,最终都会使用名/值对发送到服务器。
名/值对可以转化为XML格式:以其中的名称作为元素名,值作为元素的内容。代码如下:
<firstName>Wu</firstName>
<lastName>Wei</lastName>
<street>GuangZhou</street>
<state>China</state>
<zipCode>510000</zipCode>
当然,XML 要求有一个根元素;如果使用文档片段(XML 文档的一部分)的话则需要一个封闭元素。因此可能需要将上述 XML 转化成下面的形式:
<address>
<firstName>Wu</firstName>
<lastName>Wei</lastName>
<street>GuangZhou</street>
<state>China</state>
<zipCode>510000</zipCode>
</address>
通信:
在网络上传输 XML 之前,需要保证服务器以及发送数据的脚本能够接受 XML。
实际上,需要两个步骤来保证发送的 XML 的数据能够被正确地接收:
(1)保证向其发送 XML 的脚本能够接受 XML 数据格式。
(2)保证脚本认可发送数据所采用的特定 XML 格式和结构。

向服务器发送 XML:
当向服务器发送 XML 的时候,更多的代码用于获取数据和包装成 XML,而不是真正的传输数据。实际上,只要准备好发送到服务器的 XML 字符串,发送工作就和普通文本一样了.
建立 XML 之后,按照和发送文本基本相同的方式打开连接。对于 XML 最好使用 POST 请求,因为有些浏览器限制了 GET 请求字符串的长度。此外,XML 通过 send() 方法发送,而不是附加在请求 URL 最后的参数。这些都是非常细微的区别,很容易修改。
xmlHttp.setRequestHeader("Content-Type", "text/xml");告诉服务器要发送的是 XML 而不是一般的名/值对。

posted on 2007-12-04 22:29  CodeShark  阅读(377)  评论(0编辑  收藏  举报

导航