未定义 D3 错误数据


d3 error data is not defined

我已经在这个错误上停留了一段时间,我无法解决它。我已经使用 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 很陌生,所以如果有人可以告诉我如何克服这个错误,请提前感谢您!

请指定您在何处使用数据变量。

变量"data"仅存在于函数中,您将无法在块外引用它。

您可以在全局或在 php 响应函数外部声明变量 '_data' 并将响应 'data' 复制到其中。然后,您可以根据需要使用 _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]);
}