问候。 这是我的服务器在responseXML对象中返回的XML对象:
<tableRoot>
<table>
<caption>howdy!</caption>
<tr>
<td>hello</td>
<td>world</td>
</tr>
<tr>
<td>another</td>
<td>line</td>
</tr>
</table>
现在我将这个片段附加到我的文档树中,如下所示:
的getElementById( '为entryPoint')的appendChild(responseXML.firstChild.firstChild);
但是我得到以下 text :
,而不是呈现为表格你好! helloworldanotherline
同样的结果是我用firstChild替换firstChild.firstChild。 看起来我只是得到了nodeValues,所有的标签都被删除了?! 我是否从根本上误解了responseXML对象应该代表什么? 如果我取出'root'标签,并将innerHTML设置为responseText,这就行之有效 有人可以告诉我使用responseXML的正确方法吗?
答案 0 :(得分:4)
您获取文本而不是表,因为您使用纯DOM进行操作,而您的响应XML没有命名空间声明。因此,当附加XML元素时,浏览器不知道您的“table”标记是来自HTML,XUL,SVG还是来自。
1)添加名称空间声明:
<table xmlns="http://www.w3.org/1999/xhtml">
2)您应该首先将该节点导入HTML DOM文档,而不是直接插入引用的XML DOM元素:
var element = document.importNode(responseXML.firstChild.firstChild, true);
document.getElementById('entryPoint').appendChild(element);
希望这有帮助!
答案 1 :(得分:0)
您可以在要插入的位置创建元素,而不是
element.innerHTML = request.responseText