【发布时间】:2016-04-10 10:52:02
【问题描述】:
我是 Web 开发的新手,正在尝试弄清楚如何将 CSV 数据加载到 D3.js 中,使用 queue.js 确保在执行代码的下一步之前完全加载数据(其中将使用数据绘制图表)。
我已经无休止地用谷歌搜索了这个,但似乎无法理解 queue.js 的工作原理。
我有以下代码,但不明白为什么它不起作用。
//Create a queue. First load CSV data, then run a function on the data once fully loaded.
queue()
.defer(d3.csv, "Workbook1.csv")
.await(makeChart(mydata));
//create global variable 'mydata' to store CSV data;
var mydata = [];
//d3 CSV loading function - load data into global variable 'mydata' and convert test scores to numeric format.
d3.csv('Workbook1.csv', function(data) {
mydata = data;
mydata.forEach(function(d){ d['Test_Score'] = +d['Test_Score']; });
console.log(mydata);
});
//create function that will print my data to the console. Once I figure this out, I'll put in some d3 code to actually make the chart.
function makeChart(data) {
console.log(data);
console.log("everything ran");
};
我在控制台中收到以下错误: “未捕获的类型错误:无法读取未定义的属性‘应用’”。
我知道函数 'makeChart' 正在运行,因为我得到了 'everything run' 作为输出。但由于某种原因,它没有传入我的“mydata”变量。
d3.csv 函数中的 console.log 可以正常工作并输出正确的值。但是 makeChart 函数中的 console.log(data) 在控制台中显示为“未定义”。
为这个简单的问题道歉,但我对此非常陌生,我从谷歌搜索中找到的示例并没有让我解决这个问题。
谢谢,
J
【问题讨论】:
-
您的 html 页面是本地的还是服务器上的?因为如果我是真的,
d3.csv('XXXX.csv', function(data)...仅在您的页面位于服务器上时才有效。解决方法是here
标签: javascript csv d3.js queue.js