Вставляя результат моего php в диаграмму, он разделяет каждое число на новую строку.
То есть, если есть 120, он разделяет 1, 2 и 0. Каждый на новой строке.
В чем была моя ошибка?
Мой код:
<div>
<canvas id="canvas" height="100%"></canvas>
</div>
<script>
var lineChartData = {
labels :[1,2,3,4,5,6,7],
datasets : [
{
label: "My First dataset",
fillColor : "rgba(220,220,220,0.2)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(220,220,220,1)",
data :
<?php
while($valor = mysql_fetch_assoc($sql))
{
extract($valor);
$pingresposta.= $valor['resposta'];
$pinghorario.= $valor['horario'];
}
echo json_encode($pingresposta);
?>
}
]
}
window.onload = function(){
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx).Line(lineChartData, {
responsive: true
});
}
</script>
datasets.data
ожидает использования массива, но json_encode
возвращает строку. В javascript строки могут повторяться для каждого символа и иметь длину, как у массивов … так что утка вздрогнула и ошибки не произошло.
Вам нужно будет использовать JSON.parse
на echo’d вывод PHP, если вы собираетесь использовать json_encode и убедиться, что это массив, прежде чем отправлять его на анализируемый график.
Обновить:
Попробуйте это вместо этого.
<?php
$graphdata = array();
while($valor = mysql_fetch_assoc($sql))
{
extract($valor);
$graphdata[] = $valor['resposta'];
}
echo '[' . implode(',', $graphdata) . ']';
?>
Может быть, какие-то случайные символы из результатов запроса?
Пытаться
$pingresposta.= trim($valor['resposta']);
$pinghorario.= trim($valor['horario']);