Я пытаюсь получить данные из 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>
Когда я запускаю выше, команда alert выводит следующий результат:
[[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]
]);
Я просто не могу понять, что происходит не так. Любая помощь приветствуется.
Ответ Динеша работал:
var json_arr = <?php echo json_encode($ChartData); ?>;
data.addRows(JSON.parse(json_arr));