我正在使用d3中的散点图。我使用下面的php脚本成功连接到我的数据库,但是当我运行我的d3代码时,我收到错误:
Uncaught TypeError: data.forEach is not a function
在我的d3代码中对php脚本的连接调用:
d3.json("connection.php", function(error, data){
if (error) throw error;
data.forEach(function(d) {
d['TITLE'] = d.TITLE.toString();
d['YEAR'] = +d['YEAR'];
d['counter'] = +d['counter'];
console.log(data.query1Results);
console.log(data.query2Results);
})
这是我的php脚本:
<?php
$username = "xxx";
$password = "";
$host = "xxxx";
$database="xxxx";
$server = mysql_connect($host, $username, $password);
$connection = mysql_select_db($database, $server);
$data = array(
'query1Results' => array(),
'query2Results' => array()
);
$myquery = "SELECT `ID`, `TITLE`, `YEAR`, `In_library` FROM `papers` where In_library = 1";
$query1 = mysql_query($myquery);
if ( ! $query1 ) {
echo mysql_error();
die;
}
for ($x = 0; $x < mysql_num_rows($query1); $x++) {
$data['query1Results'][] = mysql_fetch_assoc($query1);
}
$query2 = mysql_query("SELECT `ID_to`, count(*) as `counter` from `citations` group by `ID_to` DESC");
if ( ! $query2 ) {
echo mysql_error();
die;
}
for ($x = 0; $x < mysql_num_rows($query2); $x++) {
$data['query2Results'][] = mysql_fetch_assoc($query2);
}
echo json_encode($data);
mysql_close($server);
?>
如果有人能告诉我是什么导致了这个错误和可能的解决方案,我会非常感激,因为我无法看到我出错的地方(可能是因为我已经看了很久了!)提前感谢。
答案 0 :(得分:0)
您必须在d3.json()之前创建一个空数组,然后将数据放入空数组中,如下所示:
var ante =[];
d3.json("results.json", function(data){
ante = data;
console.log(data);
ante.forEach((d)=>console.log(d.disease));
});
我做到了,而且奏效了。