2014-01-08 18 views
6

私はd3を習得していますが、CSVファイルからデータをインポートしようとしていますが、「XMLHttpRequestはfile:/// Users/Laura/Desktop/SampleECG.csvクロスオリジンリクエストはHTTPでのみサポートされています。 "私はこのエラーを修正する方法を探し、それをローカルのWebサーバー上で実行しましたが、d3.v2.jsで動作する解決策が見つかりませんでした。コードのサンプルは次のとおりです。d3のcsvファイルからデータをインポートできません

var Time = [] 
    ECG1 = [] 

d3.csv("/Desktop/d3Project/Sample.csv", function(data) 
     { 
     Time = data.map(function(d) {return [+d["Time"]];}); 
     ECG1 = data.map(function(d) {return [+d["ECG1"]];}); 
     console.log(Time) 
     console.log(ECG1) 
     }); 

ご協力いただければ幸いです。

+1

ローカルウェブサーバーを実行していますか?例えば、 [このチュートリアル](http://alignedleft.com/tutorials/d3/setup)。 –

+0

ローカルWebサーバーでどのような問題が発生しましたか? Ajaxリクエストは 'file:'プロトコルでは動作しないので、Webサーバー(ローカルであるかどうかにかかわらず)が必要です。理想的には、同じサーバーからスクリプトとcsvファイルの両方をサーバーに送ります。 – nullability

+0

私は同じ問題に直面しています。あなたは正しいファイルパスを与えましたか? file:///を開くには、ローカルサーバーを使用して要求を実行する必要があります。最初にFirefoxを開いてみてください。要求例外を処理するためです。できるだけ多くの情報(コンソールログなど)を提供してください。 – divakar

答えて

15

これは私も混乱しています(私はまたd3の初心者です)。

だから、何らかの理由で、おそらくセキュリティ上の理由などでローカルのデータを読み込むことにウェブブラウザが不満を持っています。とにかく、これを回避するには、ローカルWebサーバーを実行する必要があります。かんたんだよ。

python -m SimpleHTTPServer 8888 & 

さて、限り、その端末ウィンドウが開いて実行されているとして、あなたの地域の8888ウェブ:ウェブサイトのドキュメントルート(感謝@daixtr)、型に-ing cd後の端末で

、サーバーが実行されます。

だから私の場合、私が働いていた元々のウェブページは、私はクロームでそれを開いたときに

file://localhost/Users/hills/Desktop/website/visualizing-us-bls-data-inflation-and-prices.html 

と呼ばれていました。私のローカルWebサーバー上の私のページを開くには、私はちょうど(クローム検索バーに)入力された:

http://localhost:8888/Desktop/website/visualizing-us-bls-data-inflation-and-prices.html 

さて、CSVを読み込むには、動作するはずです。奇妙なことに、私は知っている。

+0

私はこれを試して、コンソールでこのエラーが発生するようになります。 XMLHttpRequestはhttp:// localhost:8888/test.csvを読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。したがって、原点「ヌル」はアクセスが許可されません。 あなたもこれに遭遇しましたか? –

+0

あなたのコメントと同じ問題があった場合、htmlページを '.csv'と同じ方法で要求し、同じ起点となるようにしてください。だから、Windowsエクスプローラのファイルから '.html'を開くのではなく、ブラウザでリクエストしてください。http:// localhost:8888/Desktop/website/mypage.html' –

5

Python Webサーバーを使用していて、まだ問題が発生している人は、REMEMBERを実行して、DocumentRootと見なされる正しいパスで "python -m SimpleHTTPServer 8888"を起動するようにしてください。つまり、「python -m SimpleHTTPServer 8888」をどこでも実行することはできません。実際には、index.htmlやdata.tsvを含む 'cd/to/correct/path /'にし、そこから 'python -m SimpleHTTPServer 8888'を実行する必要があります。

+0

それは大きなポイントです。私はそれを主要な答えに加えて人々に見せた。 –

0

Firefoxを使用すると、Chromeは何を達成しようとしますか

関連する問題