📄 掌握 ajax,第 7 部分 在请求和响应中使用 xml.htm
字号:
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt=""
src="掌握 Ajax,第 7 部分 在请求和响应中使用 XML.files/blue_rule.gif"
width="100%"><BR><IMG height=6 alt=""
src="掌握 Ajax,第 7 部分 在请求和响应中使用 XML.files/c.gif" width=8
border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0 align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt=""
src="掌握 Ajax,第 7 部分 在请求和响应中使用 XML.files/c.gif"
width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt=""
src="掌握 Ajax,第 7 部分 在请求和响应中使用 XML.files/u_bold.gif"
width=16 border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro7.html#main"><B>回页首</B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=4><SPAN class=atitle>发送 XML:好还是不好?</SPAN></A></P>
<P>在结束 XML 响应的 XML 请求(以及本文)之前,我们花点时间讨论一下在请求中使用 XML 的感受。前面已经提到,就传输而言
XML 完全不是最快的方式,但是还有更多因素要考虑。</P>
<P><A name=4.1><SPAN class=smalltitle>构造 XML 不是简单的事情</SPAN></A></P>
<P>首先必须认识到,对于请求来说构造 XML 不是简单的事。如<A
href="http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro7.html#c2">清单
2</A> 所示,数据很快就会和 XML 语义纠缠在一起:</P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=code-outline><PRE class=displaycode>var xmlString = "<profile>" +
" <firstName>" + escape(firstName) + "</firstName>" +
" <lastName>" + escape(lastName) + "</lastName>" +
" <street>" + escape(street) + "</street>" +
" <city>" + escape(city) + "</city>" +
" <state>" + escape(state) + "</state>" +
" <zip-code>" + escape(zipCode) + "</zip-code>" +
"</profile>";
</PRE></TD></TR></TBODY></TABLE><BR>
<P>似乎还不坏,但是要知道这是只有六个字段的 XML 片段。开发的多数 Web 表单都有十到十五个字段,虽然不一定所有的请求都使用
Ajax,但是应该考虑这种情况。至少要花和实际数据同样多的时间来处理尖括号和标签名称,有可能使本来很少的输入变得非常大。</P>
<P>这里的另一个问题前面已经提到,即必须手工创建 XML。使用 DOM 不是一种好的选择,因为没有简单易行的办法将 DOM
对象转化成在请求中发送的字符串。因此像这样使用字符串处理是最好的办法,不过也是一种维护起来最困难和新开发人员最难理解的方法。在这个例子中,所有
XML 都在一行中构造完成,如果分为多步只会更加混乱。</P>
<P><A name=4.2><SPAN class=smalltitle>XML 没有为请求增加任何东西</SPAN></A></P>
<P>除了复杂性的问题之外,和普通文本以及名/值对相比,在请求中使用 XML
实际上没有多少好处(如果有的话)。要注意,本文坚持使用前面用名/值对发送的同一些数据(请参阅<A
href="http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro7.html#c1">清单
1</A>)来用 XML 发送。我没有提什么数据能用 XML
但是<I>不能</I>用普通文本发送,这是因为实际上<I>没有</I>任何东西可用 XML 而不能用普通文本发送。</P>
<P>事实上这就是 XML 和请求的底线:不是一定非要这么做不可。在本系列的下一期文章中将看到服务器可以使用 XML
实现普通文本很难做到的一些事情,但请求不属于这种情况。因此除非和<I>只</I>接受 XML
的脚本(确实存在这样的脚本)打交道,在请求中最好使用普通文本。</P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt=""
src="掌握 Ajax,第 7 部分 在请求和响应中使用 XML.files/blue_rule.gif"
width="100%"><BR><IMG height=6 alt=""
src="掌握 Ajax,第 7 部分 在请求和响应中使用 XML.files/c.gif" width=8
border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0 align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt=""
src="掌握 Ajax,第 7 部分 在请求和响应中使用 XML.files/c.gif"
width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt=""
src="掌握 Ajax,第 7 部分 在请求和响应中使用 XML.files/u_bold.gif"
width=16 border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro7.html#main"><B>回页首</B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=5><SPAN class=atitle>结束语</SPAN></A></P>
<P>通过本文,您现在可能已经开始对 Ajax 中的 XML 有一些更深的理解了。您知道 Ajax 应用程序不一定要使用 XML,XML
也不是数据传输中的什么法宝。还知道从网页向服务器发送 XML
不是多么难的事情。更重要的是,您知道为了确保服务器能够处理和响应请求需要做什么:必须保证服务器脚本接受
XML,而且能够识别用于发送数据的格式。</P>
<P>您还应该非常清楚 XML 对于请求来说并不一定是很好的数据格式。在以后的文章中,您将看到 XML
在某些情况下是有利的,但在多数请求中,它只会降低速度和增加复杂性。因此虽然通常我都会建议您马上应用在文章中学到的内容,但是对本文来说,我建议您在应用这里学到的知识时最好三思而后行。XML
请求在 Ajax 应用程序中有自己的价值,但是并不像您所想象的那么大。</P>
<P>在下一期文章中,我们将讨论服务器如何使用 XML 做出响应,以及 Web 应用程序如何处理这些响应。令人高兴的是,服务器能够将
XML 发送回 Web 应用程序,这样做的理由比较充分,因此那篇文章中的技术细节更实用,目前您只需要知道 XML 为何并非一定是最佳选择
—— 至少对发送请求而言。您可以尝试使用 XML 作为请求数据格式实现某些 Web
应用程序,然后再换回普通文本,看看哪种办法更快更简单。下一期文章再见。</P><BR><BR>
<P><A name=resources><SPAN class=atitle>参考资料
</SPAN></A></P><B>学习</B><BR>
<UL>
<LI>您可以参阅本文在 developerWorks 全球网站上的 <A
href="http://www.ibm.com/developerworks/xml/library/wa-ajaxintro7.html?S_TACT=105AGX52&S_CMP=cn-a-x"
target=_blank>英文原文</A>。<BR><BR>
<LI><A
href="http://www.ibm.com/developerworks/cn/web/wa-ajaxintro/">掌握
Ajax 系列</A>:阅读本系列以前的文章。<BR><BR>
<LI><A
href="http://www.ibm.com/developerworks/cn/xml/library/technical/xml.html">XML
文档库</A>:developerWorks 中国网站 XML 专区提供了各种技术文章和技巧、教程、标准和 IBM
红皮书。<BR><BR>
<LI><A href="http://www.xml.com/">xml.com</A>:如果还不熟悉 XML
编程,这是最容易理解的关于 XML 方方面面的在线资源。<BR><BR>
<LI>“<A
href="http://www.ibm.com/developerworks/cn/java/j-ajax1/">面向 Java
开发人员的 Ajax:构建动态的 Java 应用程序</A>”(Philip
McCarthy,developerWorks,2006 年 10 月):从 Java 的角度看一看服务器端的
Ajax。<BR><BR>
<LI>“<A
href="http://www.ibm.com/developerworks/cn/java/j-ajax2/">面向 Java
开发人员的 Ajax:Ajax 的 Java 对象序列化</A>”(Philip
McCarthy,developerWorks,2005 年 10 月):从 Java 的角度观察如何通过网络发送对象并与 Ajax
交互。<BR><BR>
<LI>“<A
href="http://www.ibm.com/developerworks/cn/webservices/ws-wsajax/">使用
AJAX 调用 SOAP Web 服务,第 1 部分:构建 Web 服务客户机</A>”(James
Snell,developerWorks,2006 年 1 月):深入研究这篇较为高级的文章,它介绍了将 Ajax 与现有基于
SOAP 的 Web 服务相集成的有关内容,说明了如何使用 Ajax 设计模式实现一个基于 Web 浏览器的 SOAP Web
服务。<BR><BR>
<LI>万维网联盟的 <A href="http://www.w3.org/DOM/">DOM 主页</A>:请访问 DOM
相关内容的起点。<BR><BR>
<LI><A
href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/">The
DOM Level 3 Core Specification</A>:定义了核心文档对象模型,从可用的类型和属性到 DOM
在不同语言中的用法。<BR><BR>
<LI><A
href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/ecma-script-binding.html">ECMAScript
language bindings for DOM</A>:如果您是一位 JavaScript 程序员,并希望在代码中使用
DOM,可能会对 Level 3 Document Object Model Core 定义的这个附录感兴趣。<BR><BR>
<LI>“<A
href="http://adaptivepath.com/publications/essays/archives/000385.php">Ajax:
A new approach to Web applications</A>”(Jesse James
Garrett,<I>Adaptive Path</I>,2005 年 2 月):阅读有关 Ajax 起源的这篇文章,它是每一位
Ajax 开发人员的必读之物。<BR><BR>
<LI><A
href="http://www.ibm.com/developerworks/cn/offers/techbriefings/">developerWorks
技术活动</A> 和 <A
href="http://www.ibm.com/developerworks/offers/techbriefings/events.html?S_TACT=105AGX52&S_CMP=cn-a-x">网络广播</A>:随时关注这些为技术开发人员准备的软件研讨会和网络广播。
<BR><BR>
<LI><A
href="http://www.ibm.com/developerworks/cn/web/">developerWorks
中国网站 Web development 专区</A>:通过这写文章、教程和论坛等提高您的 Web
开发技能。<BR><BR></LI></UL><BR><B>获得产品和技术</B><BR>
<UL>
<LI><I><A
href="http://www.amazon.com/gp/product/0596102259/103-1888163-4853425?v=glance&n=283155&n=507846&s=books&v=glance">Head
Rush Ajax</A>,</I> Brett McLaughlin (O'Reilly Media,
2006):将本文所述概念引入您的脑海,Head First 风格。<BR><BR>
<LI><I><A href="http://www.oreilly.com/catalog/javaxml2/">Java and
XML, Second Edition</A></I>(Brett McLaughlin,O'Reilly Media, Inc.,
2001):看看作者关于 XHTML 和 XML 转换的讨论。<BR><BR>
<LI><I><A
href="http://www.amazon.com/gp/product/0596000480/103-1888163-4853425?v=glance&n=283155&n=507846&s=books&v=glance">JavaScript:
The Definitive Guide</A></I>(David Flanagan,O'Reilly Media,
Inc.,2001):深该书深入讨论了 JavaScript 和动态 Web 页面的使用。下一版将增加关于 Ajax
的两章。<BR><BR>
<LI><I><A
href="http://www.oreilly.com/catalog/hfhtmlcss/index.html">Head
First HTML with CSS & XHTML</A></I>(Elizabeth 和 Eric Freeman,
O'Reilly Media, Inc., 2005):进一步了解 HTML 和 XHTML 标准化以及如何将 CSS 应用于
HTML。<BR><BR>
<LI><A
href="http://www.ibm.com/developerworks/downloads/?S_TACT=105AGX52&S_CMP=cn-a-x">IBM
试用版软件</A>:用这些软件开发您的下一个项目,可直接从 developerWorks
下载。<BR><BR></LI></UL><BR><B>讨论</B><BR>
<UL>
<LI>通过参与<A
href="http://www.ibm.com/developerworks/blogs/?S_TACT=105AGX52&S_CMP=cn-a-x">developerWorks
blog</A>加入 developerWorks 社区。<BR><BR>
<LI><A
href="http://www.ibm.com/developerworks/forums/dw_forum.jsp?forum=965&cat=11&S_TACT=105AGX52&S_CMP=cn-a-x">developerWorks
上的 Ajax 论坛</A>:通过这个 Web 开发人员论坛学习、讨论和分享学到的知识或者使用 AJAX
的经验。</LI></UL><BR><BR>
<P><A name=author><SPAN class=atitle>关于作者</SPAN></A></P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD colS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -