0
d3.csv("result.csv", function(flights) {
    var nestByDate = d3.nest()
    .key(function(d) { return d3.time.day(d.date); });
    ..........

当我尝试从 Web 服务器运行 d3.js 代码时,它会通过加载 csv 文件正确执行 d3.js。

但是当我尝试运行 d3.js 时,如下所示,

d3.csv("D:\\Project Space\\D3Demo\\WebContent\\result.csv", function(flights) {
    var nestByDate = d3.nest()
    .key(function(d) { return d3.time.day(d.date); });
    ..........

然后它显示以下错误:

XMLHttpRequest 无法加载 file:///D:/Project%20Space/D3Demo/WebContent/result.csv。跨源请求仅支持 HTTP`

如何解决这个问题呢 ?

4

1 回答 1

2

使用 D3 的便利功能无法解决问题。

d3.csv 基本上是一个 AJAX 请求,并且受制于同源策略。

当您加载文件位置时,您的浏览器会意识到请求的文件不存在于同一域(在您的情况下可能是 localhost)并阻止请求完成。

解决此问题的一种简单方法是简单地通过 localhost 或您使用的任何内容提供内容。

或者,您可以查看Cross-origin Resource Sharing,或者为了更好的兼容性:JSONP。在这两种情况下,您可能都必须使用自己的函数将 CSV 数据转换为 javascript 数组。

于 2013-05-06T08:18:17.000 回答