我正在尝试对数据库中的一些数据进行简单的可视化,这些数据是通过 JSON 从一个简单的 Web 服务中获取的。一切都在本地主机上完成。问题似乎是 DataTable 构造函数的 JSON 格式。我已经阅读了文档,并且我认为我已经创建了确切的 json 格式,但是由于某种原因,当我将数据传递给 DataTable 构造函数时,它不会创建数据表,并且图表没有初始化它只是给出了一个错误:表没有列。我从数据库中得到的数据很好。该图表适用于以文字形式给出的示例数据,因此它不适用于 javascript。
这是生成 json 的代码(注意,我也尝试过将 "" 和 '' 以相反的顺序放置,意思是 'cols': [{id: 'ID', type: 'string' },它也不起作用):
$niz = array();
while ($red = $db->getResult()->fetch_object())
{
$niz[] = $red;
}
$jsonResponse = '{
"cols": [{id: "ID", type: "string"},
{id: "Poles", type: "number"},
{id: "Victories", type: "number"},
{id: "Team", type: "string"}
],
"rows": [';
$i = 0;
foreach ($niz as $line) {
$i = $i+1;
$addOn = '{"c":[{"v": "'.$line->name.'"}, {"v": '.$line->poles.'}, {"v": '.$line->victories.'}, {"v": "'.$line->teamName.'"}]}';
if($i == count($niz))
{
$addOn.='] }';
}
else
{
$addOn.=',';
}
$jsonResponse.=$addOn;
}
echo json_encode($jsonResponse);
});
这是图表客户端的代码:
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
url: "http://127.0.0.1/VisualisationWS/poleVictoryRatio.json",
dataType:"json",
async: false
}).responseText;
var data = new google.visualization.DataTable(jsonData);
var options = {
title: 'Correlation between pole positions and wins of drivers, taking in account the team they are currently in.',
hAxis: {title: 'Poles'},
vAxis: {title: 'Victories'},
bubble: {textStyle: {fontSize: 11}},
};
var chart = new google.visualization.BubbleChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
</body>
</html>