我目前正在使用此 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 文件替换“mypreviously generatedjson.json”)
当我尝试执行此操作时,控制台中出现错误:
Uncaught TypeError: Cannot read property 'forEach' of undefined
这是怎么回事?我实际上在这两种情况下都使用相同的 json。
最佳答案
问题是我的 php 文件生成的 json 中包含以下 mysql 警告:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
这导致我的 json 文件被 html 填充,导致 d3.json 无法读取它
关于javascript - D3 javascript从mysql中提取数据未捕获类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36317795/