我收到Uncaught错误不是数组。 这是我的.html文件
<html>
<head>
<!-- Load jQuery -->
<script language="javascript" type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js">
</script>
<!-- Load Google JSAPI -->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
url: "json.php",
dataType: "json",
async: false
}).responseText;
var data = google.visualization.arrayToDataTable($parse.jsonData(jsonData));
var chart = new google.visualization.LineChart(
document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;">
</div>
</body>
</html>
这是我的json file.php
include("dbconfig.inc.php");
$main= array();
$rows=array();
$cols=array();
$main['cols']=array(
array('label' => 'id', 'type' => 'string'),
array('label' => 'Q1', 'type' => 'string')
);
$main['rows']=array();
$sel = "SELECT * FROM mak";
try {
foreach($dbh->query($sel) as $r) {
$idd=$r['oid'];
$select = "SELECT * FROM pol WHERE id='".$idd."' ";
foreach($dbh->query($select) as $row) {
array_push($main['rows'],array('c' => array(
array('v' => $row['id']),
array('v' => $row['pol']),
)) );
}
}
}
catch(PDOException $e) {
echo $e->getMessage();
die();
}
echo json_encode($main);
?>
这个文件输出是: 它与谷歌图表需要的一样,我不明白问题出在哪里。 在做console.log($ parse.JSON(jsonData)); json对象将显示在控制台上。
{
"cols":
[
{"label":"id","type":"string"},
{"label":"Q1","type":"string"}
],
"rows":
[
{"c":[{"v":"1"},{"v":"123.0000"}]},
{"c":[{"v":"2"},{"v":"456.0000"}]}
]
}
答案 0 :(得分:6)
调用arrayToDataTable()
是错误的,因为提交数据不是数组。方法DataTable()
应该与new
一起使用,如:
var data = new google.visualization.DataTable($parse.jsonData(jsonData));
此外,Q1的类型更改为“数字”,也使用了值。