【发布时间】:2011-12-24 02:54:30
【问题描述】:
在名为 choropleth.js 的文件中,代码如下:
d3.json("assets/data/us-counties.json", function(json) {
counties.selectAll("path")
.data(json.features)
.enter().append("svg:path")
.attr("class", data ? quantize : null)
.attr("d", path);
});
我尝试加载的 JSON 对象未加载。我收到以下错误:
choropleth.js:18 Uncaught TypeError: Cannot read property 'features' of null
我已经尝试了路径的所有变体(绝对路径、相对于 .js 文件、相对于视图等),但都不起作用。我正在使用 d3 库,但我认为这没有任何作用——我认为问题很简单“指定什么 URL 来加载本地 .json 文件?”
如果需要更多信息,请告诉我。即使您不知道答案,如果可以,请指导我获取更多信息。我非常愿意研究这个。谢谢--
【问题讨论】:
-
看起来它正在尝试从应用程序的资产中加载状态 JSON 文件。服务器日志中的任何错误?服务器目录树中的 JSON 文件在哪里?你确定你有正确的路线吗?
-
JSON 是关于县边界坐标的数据。我把它放在 assets/data 目录中(在制作数据目录之后)。该文件位于 app/assets/data/us-counties.json。我没有为它设置任何路线。
-
您正在调用“d3.json”并且不传递“json”参数。这就是它为空的原因。
-
抱歉 Megas -- 你能详细解释一下吗?总的来说,我对 JavaScript 和 Web 编程真的很陌生。我试图从这个例子中学习:mbostock.github.com/d3/ex/choropleth.html
-
您可以将静态 JSON 文件放入
app/public/data/us-counties.json并以/data/us-counties.json访问它。我不确定/assets路由器在哪里需要 JSON 文件。
标签: javascript ruby-on-rails ruby json d3.js