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

上記の d3.js コードを Web サーバーから実行しようとすると、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) に存在しないことを認識し、要求が完了しないようにします。

これを回避する簡単な方法は、ローカルホストまたは使用しているものを介してコンテンツを提供することです。

または、 Cross-origin Resource Sharingを調べるか、互換性を高めるためにJSONPを調べることができます。どちらの場合も、CSV データを JavaScript 配列に変換するために、独自の関数をロールする必要がある可能性があります。

于 2013-05-06T08:18:17.000 に答える