d3.json()
を使用してローカルの.jsonファイルをインポートしようとしました。
ファイル filename.json
は、私のhtmlファイルと同じフォルダーに保存されます。
ただし、(json)パラメーターはnullです。
d3.json("filename.json", function(json) {
root = json;
root.x0 = h / 2;
root.y0 = 0;});
. . .
}
私のコードは基本的にこれと同じです d3.js example
ブラウザで実行している場合、- ローカルファイルをロードできません 。
しかし、コマンドラインでcd
を使用してファイルを含むディレクトリにdevサーバーを実行するのは非常に簡単です。
python -m SimpleHTTPServer
(またはpython -m http.server
using python 3)
ブラウザで、localhost:3000
(または:8000
またはコマンドラインに表示されるものすべて)。
以前は、d3の古いバージョンで動作していました。
var json = {"my": "json"};
d3.json(json, function(json) {
root = json;
root.x0 = h / 2;
root.y0 = 0;
});
前の回答に追加すると、ほとんどのLinux/Macマシンが提供するHTTPサーバーを使用する方が簡単です(pythonをインストールするだけで)。
プロジェクトのルートで次のコマンドを実行します
python -m SimpleHTTPServer
次に、file://.....index.html
にアクセスする代わりに、http://localhost:8080
またはサーバーの実行によって提供されたポートでブラウザーを開きます。これにより、ブラウザはブロックされずにプロジェクト内のすべてのファイルを取得します。
http://bl.ocks.org/eyaler/10586116 このコードを参照してください。これはファイルから読み取り、グラフを作成しています。私も同じ問題を抱えていましたが、後で問題が使用しているjsonファイル(余分なコンマ)にあることがわかりました。ここでnullになっている場合は、このように、取得しているエラーを出力してみてください。
d3.json("filename.json", function(error, graph) {
alert(error)
})
これはFirefoxで動作しています。chrome何らかの理由でエラーが出力されません。
バージョンd3.v5では、次のように実行する必要があります
d3.json("file.json").then(function(data){ console.log(data)});
同様に、csvおよびその他のファイル形式。
詳細は https://github.com/d3/d3/blob/master/CHANGES.md で確認できます。
readilyはできません。少なくともChromeではなく、おそらく他のブラウザーでもローカルファイルは読み取れません。
最も簡単な回避策は、JSONデータをスクリプトファイルに含めるだけで、d3.json
呼び出して、渡したコールバック内のコードを保持します。
コードは次のようになります。
json = { ... };
root = json;
root.x0 = h / 2;
root.y0 = 0;
...
私はこれを使用しました
d3.json("graph.json", function(error, xyz) {
if (error) throw error;
// the rest of my d3 graph code here
}
変数xyzを使用してjsonファイルを参照できます。graphはローカルjsonファイルの名前です