我目前使用这个php从mysql数据库获取数据:
<?php
$username = "*****";
$password = "******";
$host = "localhost";
$database="db";
$server = mysql_connect($host, $username, $password);
$connection = mysql_select_db($database, $server);
$myquery = "
SELECT `this`, `that` FROM `table`
";
$query = mysql_query($myquery);
if ( ! $query ) {
echo mysql_error();
die;
}
$data = array();
for ($x = 0; $x < mysql_num_rows($query); $x++) {
$data[] = mysql_fetch_assoc($query);
}
$fp = fopen('empdata.json', 'w');
fwrite($fp, json_encode($data));
fclose($fp);
mysql_close($server);
?>
然后我用我生成的前一个json文件运行这个html
d3.json("mypreviouslygeneratedjson.json", function (error, data) {
data.forEach(function (d)
{
...
}
...
一切顺利,我可以生成条形图,饼图等。但是只要我用这一行替换3 fopen,fwrite和fclose行:
echo json_encode($data);
(加上我用之前提到的php文件替换“mypreviouslygeneratedjson.json”)
一旦我尝试这样做,我在控制台中出现错误:
未捕获的TypeError:无法读取未定义
的属性'forEach'
这里发生了什么?我几乎在两种情况下使用相同的json。
答案 0 :(得分:0)
问题是我的php文件生成的json包含以下mysql警告:
不推荐使用:mysql_connect():不推荐使用mysql扩展 将来将被删除:使用mysqli或PDO代替
这导致用html填充我的json文件,使d3.json无法读取