【问题标题】:Browser Problems Parsing XML With JQuery使用 JQuery 解析 XML 的浏览器问题
【发布时间】:2011-08-31 08:04:27
【问题描述】:

我需要使用 JQuery 访问 XML 文件。我尝试了这两种方法,但我似乎无法在一个浏览器上包含它们。

这里:

在 Chrome 中,这是可行的:

var xml = "<music><album>Beethoven</album></music>";
var result = $(xml).find("album").text();
alert(result);

现在我尝试将它与这段代码 sn-p 结合使用,它在 IE 中运行良好:

jQuery.get('fruits.xml', function(data) {
    alert(data);
});

问题是,如果我将这两个代码放在一起,其中一个不能在另一个上工作。因此,在 Chrome 中,我可以访问“Beethoven”,但无法访问“fruits.xml”,但会出现此错误:

XMLHttpRequest cannot load file:///C:/Python32/fruits.xml. Origin null is not allowed by Access-Control-Allow-Origin.

另一方面,在 IE 中,我可以访问 fruits.xml 的全部内容并将其保存到一个变量中,但是我需要访问在 Chrome 中工作的 XML 属性的代码在 IE 中不起作用。

如您所见,我想使用代码的第二个 sn-p 获取 xml 的内容,而我将使用代码的第一个 sn-p 访问 xml 的内容。还有另一种使用 Javascript 访问 XML 的方法吗?你能帮我解决我的代码有什么问题吗?

帮助?

【问题讨论】:

  • 第一个例子是个坏主意:主 jQuery 函数将文本解析为 HTML,而不是 XML。您应该改用 jQuery 的 parseXML() 函数:var result = $($.parseXML(xml)).find("album").text();

标签: javascript jquery xml


【解决方案1】:

导致错误消息的问题是您将 XHRRequest(*A*JAX 中的 A)发送到 file:// URL。出于安全原因,现代浏览器已禁用此功能。相反,设置一个网络服务器并通过http://localhost/.. 而不是file://C:/... 访问您的页面。

对于第二部分,请确保首先测试加载 fruits.xml。存储在此文件中的 XML 可能存在错误,或者其结构不是您所期望的。您可以在 IE 中调试 JavaScript,方法是按 F12,转到“脚本”选项卡,然后单击 Start Debugger。这样,您将获得比“不起作用”更好的错误描述。

【讨论】:

  • 苛刻。我使用了 Chrome 的调试器,但不知道 IE 的调试器在哪里。我一直在 Chrome 上按 F12 原来它是为 IE 设计的。好吧,我重新检查并没有在 IE 中出现错误消息。当贝多芬的警报出现时,它什么也没有显示(一个空白的警报框)。我会尝试做你的第一段!嗯,我的 XML 很好。 :) Guyabano
【解决方案2】:

这可能是与 chrome 相关的错误

loading local files in chrome bug/security feature

Problems with jQuery getJSON using local files in Chrome

Accessing relative URL's via "ajax" from "file://" content

作为建议,不要将您的 xml 包装在 jquery 中并以这种方式解析它可能会因浏览器而异,而不是 .parseXML

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 2011-12-18
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    相关资源
    最近更新 更多