2012-10-16 32 views
3

我正尝试用django后端创建d3.js可视化文件。
我想呈现一些JSON成图:如何使用Django将本地JSON对象加载到D3.js前端?

 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对象;有没有人有任何想法?

+0

我猜你在“world-countries.json”中有一个路径错误,因为那个错误告诉你,你传入的json是null。 –

+0

“world-countries.json”是一个本地json对象吗?听起来像一个URL给我。 –

回答

0

确保从Web服务器提供页面以避免路径和跨域问题。这可以通过node.js和connect npm或者使用python作为d3js的作者来实现,它可以简单快捷地实现。

我想在一般情况下处理json文件,您应该提供一些上传机制。如果你碰巧使用Chrome有可能是所报道的这个计算器问题交换机:

Load local JSON files via file:// triggers cross-domain null origin violation, solution? (jQuery)

所以这更是一个Ajax的JSON-跨域问题不d3js

HTH

1

检查你正在使用的D3版本。 我有同样的问题,事实证明回调需要两个参数 - 错误和数据。

实施例:

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

以来的第一个参数是“错误” - 当不存在错误似乎JSON对象为空。