我一直坚持这个错误一段时间,我无法解决这个问题。我已经使用php文件将我的d3.js连接到数据库,我正在使用散点图可视化。在连接到php文件一切都很好。以下是相关代码:
d3.json("connection1.php", function(error, data){
data.forEach(function(d) {
d['TITLE'] = d.TITLE.toString();
d['YEAR'] = +d['YEAR'];
d['ABSTRACT'] = d.ABSTRACT.toString();
console.log(d);
})
});
但是当我这样做时:
// don't want dots overlapping axis, so add in buffer to data domain
xScale.domain([d3.min(data, xValue)-1, d3.max(data, xValue)+1]);
yScale.domain([d3.min(data, yValue)-1, d3.max(data, yValue)+1]);
我收到错误
Uncaught ReferenceError: data is not defined
我是d3的新手,所以如果有人能告诉我如何克服这个错误,请提前谢谢!
答案 0 :(得分:0)
请指定您在哪里使用数据变量。
变量'数据'仅存在于函数中,并且您无法在块外引用它。
您可以声明变量' _data'全局或在php响应函数之外并复制响应数据'它。然后,您可以根据需要使用_data变量。在闭包,变量范围,全局变量等中阅读更多相关信息。
var _data;
d3.json("connection1.php", function(error, data){
_data = data;
_data.forEach(function(d) {
d['TITLE'] = d.TITLE.toString();
d['YEAR'] = +d['YEAR'];
d['ABSTRACT'] = d.ABSTRACT.toString();
console.log(d);
});
createGraph();
});
function createGraph() {
/* code to create svg and other components goes here */
xScale.domain([d3.min(_data, xValue)-1, d3.max(_data, xValue)+1]);
yScale.domain([d3.min(_data, yValue)-1, d3.max(_data, yValue)+1]);
}