【问题标题】:d3.parseDate Error cannot read property 'forEach' of undefinedd3.parseDate 错误无法读取未定义的属性“forEach”
【发布时间】:2014-06-26 07:57:23
【问题描述】:

希望大家能帮帮我。我被困在尝试使用 D3 和 JSON 文件制作带有时间序列的条形图。我的 JSON 文件的结构如下:

{
            "ProjectCode": "PRJ2.1",
            "numberOfSchools": 1188,
            "newSchools": 0,
            "date": 2011-12
        }, 

y 轴应该显示 numberOfSchools,而 x 轴应该显示过去的年数。我在 x 轴上使用了时间刻度和序数刻度的组合,并将日期解析为:

data.forEach(function(d) {
                    d.date = parseDate(d.date.toString());
                    d.numberOfSchools = +d.numberOfSchools;
                });

我猜 JSON 文件没有被正确解析,我尝试了 herehere 的解决方案,但没有成功。我正在使用 D3.v3。下面是我的 JSFiddle

http://jsfiddle.net/siyafrica/ESYE3/

【问题讨论】:

    标签: javascript jquery json d3.js


    【解决方案1】:

    我已经看到上面的小提琴,并且理解,我可以说给出文件的确切位置。 Json 文件的 URL 可能是错误的,这就是问题出现的原因。 阅读下面的定义

    d3.json(url[, 回调])

    使用 mime 在指定 url 创建对 JSON 文件的请求 输入“应用程序/json”。如果指定了回调,则请求为 立即使用 GET 方法发出,回调将是 文件加载或请求失败时异步调用; 使用两个参数调用回调:错误(如果有)和 解析的 JSON。如果发生错误,解析的 JSON 是未定义的。如果不 指定回调,返回的请求可以使用 xhr.get 或类似的,并使用 xhr.on 处理。

    以上来自 GitHub--> https://github.com/mbostock/d3/wiki/Requests#d3_json

    【讨论】:

    • JSON 文件在我的本地服务器上,当我尝试将 URL 更改为确切位置(即 Applications/MAMP/htdocs/Visualization/Data/data.json)时,它给了我 404 错误.但是当我保持原样时,它会找到文件。同样在我的控制台中,我收到一个 200 OK 通知,表明文件已找到。
    • 那么我建议你看看你在 JSON 文件中的数据结构,数据有一个关键日期,它的关联值为 2011-12 这将给出 1999,但在 parseDate 我们提到格式是不同的,一旦将值作为字符串给出,即将该值写在双引号中并检查。回复仍然面临问题。
    • 我把日期变成了这样的字符串:“1-Mar-13”。我将 parseDate 函数更改为: var parseDate = d3.time.format("%d-%m-%y").parse;我仍然得到同样的错误。
    • 在您的 jsfiddle 中,我们也遇到了同样的问题,但是您说 data.json 读取正常,在控制台中您收到 200 OK 响应,但我看到以下错误 GET fiddle.jshell.net/siyafrica/ESYE3/show/Data/data.json 404 Not Found 360ms 为什么会显示??
    • 我现在收到 304 Not Modified。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2023-03-28
    • 2021-11-24
    • 2016-06-30
    相关资源
    最近更新 更多