使用JQuery解析XML的浏览器问题

时间:2011-08-31 08:04:27

标签: javascript jquery xml

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

下面:

在Chrome中,这可行:

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

现在我尝试将它与此代码段一起使用,它在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中不起作用。

如您所见,我想使用第二段代码获取xml的内容,而我将使用第一段代码访问xml的内容。有没有其他方法可以使用Javascript访问XML?你能帮我解决我的代码有什么问题吗?

帮助?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

这可能是与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