﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-J2EE学习笔记-随笔分类-原创</title><link>http://www.blogjava.net/migrant/category/35089.html</link><description>我们的失落……</description><language>zh-cn</language><lastBuildDate>Sat, 16 May 2009 05:07:07 GMT</lastBuildDate><pubDate>Sat, 16 May 2009 05:07:07 GMT</pubDate><ttl>60</ttl><item><title>[原创]一个低级错误导致的AJAX无法解析返回的XML</title><link>http://www.blogjava.net/migrant/archive/2008/10/09/233400.html</link><dc:creator>J2EE学习笔记</dc:creator><author>J2EE学习笔记</author><pubDate>Thu, 09 Oct 2008 11:55:00 GMT</pubDate><guid>http://www.blogjava.net/migrant/archive/2008/10/09/233400.html</guid><wfw:comment>http://www.blogjava.net/migrant/comments/233400.html</wfw:comment><comments>http://www.blogjava.net/migrant/archive/2008/10/09/233400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/migrant/comments/commentRss/233400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/migrant/services/trackbacks/233400.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: 宋体"><span style="font-family: 新宋体"><span style="font-size: 10pt; font-family: ">在用<span style="font-family: ">AJAX</span>(结合<span style="font-family: ">Struts</span>)做一个联动下拉框的过程中，后台<span style="font-family: ">action</span>中返回的<span style="font-family: ">XML</span>用如下<span style="font-family: ">javascript</span>代码解析</span></span><br style="font-family: " />
</span><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_24_119_Open_Image" onclick="this.style.display='none'; Codehighlighter1_24_119_Open_Text.style.display='none'; Codehighlighter1_24_119_Closed_Image.style.display='inline'; Codehighlighter1_24_119_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_24_119_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_24_119_Closed_Text.style.display='none'; Codehighlighter1_24_119_Open_Image.style.display='inline'; Codehighlighter1_24_119_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;parseMessage()&nbsp;</span><span id="Codehighlighter1_24_119_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_24_119_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;xmlDoc</span><span style="color: #000000">=</span><span style="color: #000000">req.responseXML.documentElement;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;xSel</span><span style="color: #000000">=</span><span style="color: #000000">xmlDoc.getElementsByTagName("addr4");<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<br />
<span style="font-size: 10pt; font-family: 新宋体">奇怪的是 <span style="font-family: Arial">var xSel = xmlDoc.getElementsByTagName("addr4")</span> 始终无法取得若干个 <span style="font-family: Arial">&lt;addr4&gt;XXX&lt;/addr4&gt;</span> 内容， 在网上查也都是这种写法，搞了一个下午弄的我头晕脑胀。最后同事一语提醒了我，在<span style="font-family: Arial">action</span>中加入以下代码，问题解决：<br style="font-family: " />
</span><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">response.setContentType(</span><span style="color: #000000">"</span><span style="color: #000000">text/xml;charset=UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />response.setHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Cache-control</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">no-cache</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
<br />
<span style="font-size: 10pt; font-family: 宋体"><span style="font-family: 新宋体"><span style="font-size: 10pt; font-family: ">结论：如果没有这两句，返回值不会被当做<span style="font-family: ">XML</span>处理，当然就取不到 <span style="font-family: ">addr4</span> 节点</span> <br style="font-family: " />
<br style="font-family: " />
<br style="font-family: " />
<span style="font-size: 10pt; font-family: "><span style="font-family: "><span style="font-size: 10pt; font-family: ">2008.10.22</span></span> 补充：有的人写将上面的第一句简化成：<br style="font-family: " />
</span></span></span><span style="font-size: 10pt"><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">response.setContentType(</span><span style="color: #000000">"</span><span style="color: #000000">text/xml</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
</span><br />
<span style="font-size: 10pt"><span style="font-family: 新宋体"><span style="font-size: 10pt; font-family: ">这样做如果返回的<span style="font-family: ">XML</span>中没有中文时没问题，但是如果返回的<span style="font-family: ">XML</span>中存在中文的话，也会无法取得返回的<span style="font-family: ">XML</span></span> </span></span>
<img src ="http://www.blogjava.net/migrant/aggbug/233400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/migrant/" target="_blank">J2EE学习笔记</a> 2008-10-09 19:55 <a href="http://www.blogjava.net/migrant/archive/2008/10/09/233400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>