1

我是新手,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 存在时代码会这样做?

4

2 回答 2

0

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

于 2012-11-23T05:05:12.347 回答
0

您正在访问节点的第一个子textblock节点,这是一个带有 text 的文本节点"Block with html"。这里的行为完全是意料之中的。如果您想要整个textblock节点,请使用:

HttpPostExch.responseXML.getElementsByTagName("textblock")[0].data;
于 2012-11-21T06:32:51.047 回答