【问题标题】:PHP XML IE problemPHP XML IE 问题
【发布时间】:2010-11-04 20:28:00
【问题描述】:
<?xml version="1.0" ?> 
<NBR>
    <resultGroups>
    <result>Hello</result> 
    </resultGroups>
</NBR>

我有一个在 PHP 中创建的 n xml,就像这样。我正在将此 XML 重新转换为 javascript,并尝试使用

访问节点“结果”的值
alert($(xmlObj).children('result').text()); 

在 Firefox 中它工作正常。但在 IE 中它什么也没给出...

我该如何解决这个问题???

【问题讨论】:

  • 也许这应该是:“IE 问题:不遵循标准”:-)
  • 该文件是否具有 .xml 文件扩展名?如果扩展名与实际文件类型不匹配,IE 会出现问题。
  • @Jweede - 是的,我同意。今天我刚遇到一个“IE7 不吃饼干”的问题。它只是简单地拒绝了我的 PHP 应用程序的 cookie!

标签: php javascript jquery xml


【解决方案1】:

可能是您没有发送正确的 XML Content-Type 标头。您应该发送带有 XML 内容的 Content-Type: text/xml。您还应该检查是否在标题和文件中设置了正确的字符集。如果 JS 代码正确并且您的 XML 响应有效,IE 应该能够解析正确的 XML 响应。

【讨论】:

  • 确保它是响应的第一部分,否则标题将已经设置为其他内容。
【解决方案2】:

我猜这与 text() 函数有关。我自己是一个原型人,但不久前我在 IE 上遇到了类似的问题。它来自我试图从 DOM 中的元素中提取 textContent 值。我可以在所有其他浏览器中获取价值,但 IE 给了我轴。在运行了一些测试之后,这是我想出的:

IE 不支持 element.textContent。在大多数浏览器中,例如 FireFox,您可以从 element 中提取 textContent 值。

示例

<p id="my_element">this is my element</p>
alert($('my_element').textContent); // will alert "this is my element"

在 IE 中,你需要使用 element.innerHTML。这将返回您想要的值。现在,我假设 text() 正在返回 textContent 值,这就是你没有骰子的原因。

示例

<p id="my_element">this is my element</p>
alert($('my_element').innerHTML); // will alert "this is my element"

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    您是否通过 SSL 加载此内容?

    IE 中存在一个已知问题,有时无法通过 SSL 加载 XML:

    http://support.microsoft.com/default.aspx?scid=kb;en-us;272359

    此页面包含有关如何解决它的更多信息:

    http://www.blog.lessrain.com/flash-nasty-xml-load-bug-in-internet-explorer/

    【讨论】:

      【解决方案4】:

      确保您在标题中指定Content-Type charset,并且您的字符集(如果使用utf-8)是utf-8not utf8。 IE不识别后者,懒得告诉你。

      因此,您希望您的标题指定以下内容:

      Content-Type: application/xml; charset=utf-8
      

      【讨论】:

        【解决方案5】:

        您是否尝试过在提醒数据之前解析数据,并可能使用 find 代替?

        var node_text = $(xmlObj).find('result').text();
        alert(node_text);
        

        否则我会建议尝试将结果标签更改为不同的东西(如 theresult) - 每个人都知道 IE 喜欢做奇怪的事情! :)

        【讨论】:

          【解决方案6】:

          如果 中,则尝试:

          alert($(xmlObj).children('resultGroups').children('result').text());
          

          或者,你可以试试:

          alert($($($(xmlObj).children('resultGroups')).children('result')).text());
          

          甚至:

          alert($($(xmlObj).children('result')).text());
          

          让我知道这些是否有效。

          【讨论】:

          • 你只是创建了多个 jQuery 对象,并没有从中获得真正的价值。
          • 他可能正在使用原型。如果他使用的是 Prototype,建议你按照我说的那样做,在指南上:prototypejs.org/learn/extensions(在底部)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 2012-01-12
          • 2013-05-20
          • 1970-01-01
          相关资源
          最近更新 更多