3

django バックエンドで d3.js ビジュアライゼーションを作成しようとしています。
私はいくつかのjsonをマップにレンダリングしようとしています:

     d3.json("world-countries.json", function(json) {
        self.countries.selectAll("path")
        .data(json.features)
        .enter().append("path")
        .attr("d", self.path)
        .on("mouseover", function(d) {
            d3.select(this).style("fill","#6C0");})
        .on("mouseout", function(d) {
            d3.select(this).style("fill","#000000");})
    });

しかし、私はエラーが発生し続けます:

Uncaught TypeError: Cannot read property 'features' of null

Django を介して json オブジェクトにアクセスする方法がわかりません。誰かアイデアはありますか?

4

2 に答える 2

1

使用している D3 のバージョンを確認してください。私は同じ問題を抱えていましたが、コールバックにはエラーとデータの2 つの引数が必要であることがわかりました。

例:

d3.json("world-countries.json", function(error, json) {
   // your code
}

最初の引数が「エラー」であるため、エラーがない場合、json オブジェクトは null のように見えます。

于 2013-01-06T15:16:09.740 に答える
0

パスやクロス ドメインの問題を回避するために、必ず Web サーバーからページを提供してください。これは、node.js と connect npm を使用するか、d3js の作成者が使用していた python を使用して、簡単かつ迅速に達成できます。

一般的にjsonファイルを処理したい場合は、アップロードメカニズムを提供する必要があります。たまたまChromeを使用している場合、このstackoverflowの質問で報告されているように、スイッチがある可能性があります:

file:// 経由でローカルの JSON ファイルをロードすると、クロスドメインの null オリジン違反がトリガーされますが、解決策はありますか? (jQuery)

したがって、これはd3jsではなく、Ajax-json-crossdomainの問題です

HTH

于 2012-10-17T16:54:13.277 に答える