2012-04-24 100 views
1

我想设置一个网站在本地文件系统上运行并调用XML文件,但我得到访问控制源错误:jquery - 从本地文件系统加载XML文件没有跨域错误

Access-Control-Allow-Origin不允许原始位置为null。

我已经尝试切换到数据类型和JSONP跨域设置为true:

$j.ajax({ 
      crossdomain: true, 
      url: 'xml/vehicles.xml', 
      dataType: "jsonp",  
      success: function(vehicleXML) { 
       supertree.parseVehicles($j(vehicleXML).find("vehicles"), null); 
       supertree.vehiclesLoaded = true; 
       if(supertree.scenesLoaded) supertree.ready(); 
      } 
     }); 

但它不工作。有关如何完成此任何想法?最好没有代理?

+0

由于您使用的是文件系统,因此有一个全新的限制和跨浏览器差异列表。例如,Chrome将不允许您对文件系统执行任何XMLHTTP请求,除非您使用正确的标志运行chrome。其他浏览器可能会允许请求没有问题。更改为JSONP而不是XML将成为处理该问题的最具跨浏览器的方式。 – 2012-04-24 15:41:11

回答

2

Same origin policy阻止您访问数据。要请求数据的服务器需要启用CORS,或者您需要在服务器上使用代理来从其他服务器获取数据。

其他选项是将XML数据更改为JSONP格式。这并不像告诉jQuery发出JSONP请求那么简单。数据格式完全不同,服务器必须返回该格式,但JavaScript无法做到这一点。