responseXML剪辑发送的XML数据

时间:2012-11-21 06:26:44

标签: javascript xmlhttprequest

我是XMLHttpRequest的新用户,但已使用GET成功更新服务器上的时钟。

现在我需要发送POST并接收XML。服务器上的PHP正在接收帖子,甚至以XML格式发回数据,但如果XML元素包含类似html的代码,我会遇到一个奇怪的问题:responseXML将从html代码剪切的元素文本传递到结尾。

以下是相关代码:

PHP发送XML:

header( 'Content-type: text/xml' );
echo '<?xml version="1.0"  encoding="UTF-8"   ?>'; 
echo "<posts>"; 
echo "<textblock>Block with html<br />Next line in block</textblock>"; 
echo "<inputline>input line</inputline>";
echo "</posts>";  

根据Firebug的完整XML响应(注意所有数据都在那里)

<?xml version="1.0"  encoding="UTF-8"   ?><posts><textblock>Block with html<br />
Next line in block</textblock><inputline>input line</inputline></posts>

回到浏览器中,JS变量收到获取“阻止与html”,没有别的。 HttpPostExch 是XMLHttpRequest

var received = 
HttpPostExch.responseXML.getElementsByTagName("textblock")[0].firstChild.data;

下一个元素inputline可以毫无问题地使用。以上是用FF16,IE8也一样。所以我应该做错事,在HTML中加入XML代码。

当html存在时代码执行该操作的任何想法?

2 个答案:

答案 0 :(得分:0)

您正在访问textblock节点的第一个子节点,该节点是文本"Block with html"的文本节点。这里的行为是完全可以预期的。如果您想要整个textblock节点,请使用:

HttpPostExch.responseXML.getElementsByTagName("textblock")[0].data;

答案 1 :(得分:0)

XML不接受元素文本中的斜角括号,因此无法发送HTML文本。我认为这是一个不必要的限制。我很容易将元素的结尾与HTML标记区分开来。