【发布时间】:2015-02-04 23:27:11
【问题描述】:
我正在努力从 PHP 中获取数据到图表中。我在 1 个 php 页面上有以下代码。首先是简单的部分:
$sql = "SELECT * FROM (SELECT timestamp, CurrentKelvin, TargetKelvin, WeatherTempKelvin FROM `rawdata` ORDER BY `rawdata`.`timestamp` DESC LIMIT 10) AS ttbl ORDER BY `timestamp` ASC;";
$results = mysqli_query($con,$sql);
$ChartData = array();
foreach($results as $result)
{
$ChartData[] = array( (int)$result['CurrentKelvin'],(int)$result['TargetKelvin']);
}
$ChartData = json_encode($ChartData);
然后是javascript部分:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1.0', {'packages':['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'CurrentKelvin');
data.addColumn('number', 'TargetKelvin');
alert( <?php echo json_encode($ChartData); ?>);
data.addRows( <?php echo json_encode($ChartData); ?> );
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data);
}
</script>
<!--Div that will hold the pie chart-->
<div id="chart_div"></div>
当我运行上面的警报命令时,会显示以下输出:
[[292,290],[292,290],[291,290],[291,290],[291,290],[291,290],[291,290],[291,290],[291,290],[291,290]]
但是 data.addRows 行会产生以下错误: 错误:为 addRows 提供的参数必须是数字或数组
将 data.addRows 更改为简单的东西(并将 data.addColumn 更改为字符串,使用相同的数组构造,我确实得到了一个图表:
data.addRows([
['Ivan', 5],
['Igor', 7],
['Felix', 8],
['Bob', 4]
]);
我只是不知道出了什么问题。任何帮助表示赞赏。
【问题讨论】:
-
如果您的 data.addRows 方法需要数组作为参数 .. 您将不得不按原样发送 $charData ,即不进行编码.. 或将其转换为 javascript 数组格式。
-
试试这个 - var json_arr = ; data.addRows(JSON.parse(json_arr)))
-
是的!谢谢 Dinesh,那行得通。
标签: javascript php arrays google-visualization