2017-01-11 4 views
3

d3.csvを使用して親フォルダにあるファイルを参照しようとしていますが、正しい構文を見つけることができません。私はmyGraph.jsを持っているのjsフォルダ内d3.csvが1つのディレクトリに移動できません

root 
└── js 
    ├── data.csv 
    └── myGraph.js 

次のように

マイフォルダ構造があります。このファイルには、次のコードがあります。

d3.csv("data.csv", function(error, data) { 
    data.forEach(function(d) { 
    d.date = parseDate(d.date); 
    d.close = +d.close; 
}); 

jsフォルダ内にdata.csvを配置すると、すべて正常に動作します。私はdata.csvを移動する場合は、ルートフォルダ

root 
├── data.csv 
└── js  
    └── myGraph.js 

にアップファイルとそれが動作を停止し、これにコードを変更:

d3.csv("/../data.csv", function(error, data) 

私も試してみました:

d3.csv("../data.csv", function(error, data) 

誰かが私が間違っていることを知っていて、正しい構文は何ですか?どうもありがとう。

+0

ファイルをローカルで配信するために使用しているサーバーはどれですか? – HamsterHuey

+0

良い点。私はローカルサーバーを使用していません - その理由がありますか?私は単にローカルのWindowsマシンにすべてのファイルを保存しています。私はウィンドウがコマンドラインで..の使用を許可するので、それがjavascriptでも動作することを期待していた - これは問題であると推測する。あなたがインストールされているサーバでしか動作しないと答えるなら、私は正しい答えとしてマークします。ありがとうございます。 –

答えて

3

ロバート - この作業を取得することによって動作するように、物事のカップルがあります:

1)により、ブラウザのセキュリティモデルに、あなたは直接直接指定することで、ブラウザからローカルマシンに/ロードファイルを参照することはできませんローカルディレクトリのファイルへの絶対パスまたは相対パス。ローカルWebサーバを使用してファイルを提供し、ブラウザにアクセスできるようにする必要があります(または、d3.csvの呼び出しで指定できるURLがある場所にアップロードしてください...しかし面倒です)。

2)通常、.js.htmlファイルを含むディレクトリで基本HTTPサーバーを実行できます。たとえば、Python 3がシステム全体にインストールされている場合は、python -m http.serverを使用してコマンドラインからディレクトリ内のHTTPサーバーを起動できます。 http://localhost:8000あなたのサイトにアクセスできます残念なことに、この基本的なサーバーは、起動されたディレクトリ内のファイルのみを提供し、起動されたディレクトリの外にある他のファイルへの相対パスの参照はできません。より多くの有能な/柔軟なローカルWebサーバーを実行して、一連のフォルダ間でファイルの相対パスベースの参照を可能にすることができます。

これはちょっと面倒ですが、ブラウザがローカルファイルへの直接アクセスを許可しないように設計されている理由が理解できます。

+1

非常に詳細な回答をいただきありがとうございます。 –

関連する問題