我是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存在时代码执行该操作的任何想法?
答案 0 :(得分:0)
您正在访问textblock
节点的第一个子节点,该节点是文本"Block with html"
的文本节点。这里的行为是完全可以预期的。如果您想要整个textblock
节点,请使用:
HttpPostExch.responseXML.getElementsByTagName("textblock")[0].data;
答案 1 :(得分:0)
XML不接受元素文本中的斜角括号,因此无法发送HTML文本。我认为这是一个不必要的限制。我很容易将元素的结尾与HTML标记区分开来。