d3 - 未捕获的TypeError:data.forEach不是函数

时间:2016-02-17 21:59:59

标签: php d3.js

我正在使用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);


?>

如果有人能告诉我是什么导致了这个错误和可能的解决方案,我会非常感激,因为我无法看到我出错的地方(可能是因为我已经看了很久了!)提前感谢。

1 个答案:

答案 0 :(得分:0)

您必须在d3.json()之前创建一个空数组,然后将数据放入空数组中,如下所示:

 var ante =[];
   d3.json("results.json", function(data){
       ante = data;
        console.log(data);
        ante.forEach((d)=>console.log(d.disease));
});

我做到了,而且奏效了。