浏览器问题使用JQuery解析XML

问题描述:

我需要使用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中我能够访问“贝多芬”,而不是能够访问“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?你能帮我解决我的代码有什么问题吗?

帮助?

+0

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

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

对于第二部分,请确保您先测试加载fruits.xml。有可能是存储在这个文件中的XML有错误,或者它的结构不符合你的期望。您可以通过按下F12,转到脚本选项卡,然后单击Start Debugger来调试IE中的JavaScript。这样,你会得到比“不起作用”更好的错误描述。

+0

苛刻。我使用Chrome的调试器,但没有想到IE的调试器在哪里。我一直在Chrome上按F12,结果发现它适用于IE。那么,我重新检查,并没有错误信息在IE中出现。当贝多芬的警报到来时,它什么都不显示(一个空白的警报框)。 我会尽量做你的第一段!嗯,我的XML很好。:) 刺果番荔枝

这可能与铬

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