我可以一次性将Ajax requestXML对象追加到我的文档树吗?

时间:2009-04-29 20:45:12

标签: dom xmlhttprequest

问候。 这是我的服务器在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的正确方法吗?

2 个答案:

答案 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