【问题标题】:Parsing prototype AJAX.response XML in IE在 IE 中解析原型 AJAX.response XML
【发布时间】:2009-10-26 17:13:52
【问题描述】:

我有一个使用 PrototypeJS 获取的 xml 网络服务。 xml 具有正确的内容类型并且格式正确,如下所示:

<GetTokenResponse xmlns="http://tempuri.org/">
    <GetTokenResult>F655100D64F098F0AC33AFF414A4A0D5</GetTokenResult>
</GetTokenResponse>

AJAX请求成功完成,IE和FF都可以访问GetTokenResult节点,但FF只能获取节点的文本内容。我的代码如下:

node = transport.responseXML.documentElement.getElementsByTagName('GetTokenResult')[0];
rawToken = (document.all) ? node.innerText : node.textContent;

我已经尝试过 innerText 和 innerHTML,以及 children[0] 和其他一些偶然的猜测,但是当我访问 rawToken 时 IE 返回 'undefined'。

有人可以帮忙吗?谢谢,亚当

【问题讨论】:

  • 你的 xml 有小写的&lt;gettokenresult&gt;。如果如您所说的 MIME 类型是正确的 (text/xml),那么 getElementsByTagName 将区分大小写。仅供参考....
  • 谢谢 - 当我复制和粘贴时,案例丢失了 - 原始文档是标题大小写。还有其他建议吗?
  • @adam:在这种情况下(没有双关语;)请参阅我的答案。

标签: javascript xml web-services internet-explorer prototypejs


【解决方案1】:

尝试访问节点值:

rawToken = node.firstChild.data;

这应该适用于所有现代浏览器以及 IE。

【讨论】:

    【解决方案2】:

    要获取文本内容,使用firstChild.nodeValue

    【讨论】:

      【解决方案3】:

      node = transport.responseXML - 这是正确的。

      您最终会得到“节点”作为 string 格式的 XML。剥去其余部分。您需要先将字符串转换为 XML 文档,然后才能直接对其进行操作。

      见:Convert String to XML Document in JavaScript

      或见:http://www.discussweb.com/html-css-javascript-coding-techniques/3308-convert-ordinary-string-into-xml.html

      【讨论】:

      • 谢谢,但 Prototype 会自动将其转换为 XML,因此我可以访问节点(但不能访问节点内容)
      • responseXML如果可用,始终是一个 DOM 文档对象,无论使用何种 ajax 库。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多