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 版本。我遇到了同样的问题,结果回调需要两个参数——错误和数据。

例子:

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

因为第一个参数是“错误”——当没有错误时,json 对象似乎为空。

于 2013-01-06T15:16:09.740 回答
0

确保从 Web 服务器提供页面以避免路径和跨域问题。这可以使用 node.js 和 connect npm 或使用 python 轻松快速地完成,因为 d3js 的作者曾经这样做过。

我一般要处理json文件应该需要提供一些上传机制。如果您碰巧使用 Chrome,则可能会出现此 stackoverflow 问题中报告的 Switch:

通过 file:// 加载本地 JSON 文件触发跨域空源冲突,解决方案?(jQuery)

所以这更多的是 Ajax-json-crossdomain 问题而不是 d3js

高温高压

于 2012-10-17T16:54:13.277 回答