AddRows получает массив PHP

0

Я пытаюсь получить данные из 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] 
]);

Я просто не могу понять, что происходит не так. Любая помощь приветствуется.

  • 0
    если ваш метод data.addRows требует массив в качестве параметра .. вам нужно будет либо отправить $ charData как есть, т.е. без кодирования .., либо преобразовать его в формат массива javascript.
  • 2
    попробуйте это - var json_arr = <? php echo json_encode ($ ChartData); ?>; data.addRows (JSON.parse (json_arr)))
Показать ещё 1 комментарий
Теги:
arrays
google-visualization

1 ответ

0

Ответ Динеша работал:

      var json_arr = <?php echo json_encode($ChartData); ?>; 
      data.addRows(JSON.parse(json_arr));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню