Ich versuche, ein Kreisdiagramm mit chart.js (neueste Version) zu erstellen.Das Übergeben von json_encode an chart.js funktioniert nicht
Ich habe ein Array erstellt, das ich als Datenvariable für das Diagramm ausgeben möchte.
Das ist der PHP-Code ist:
<?php if($os != null) {
$tiposOs = array('Orçamento'=> "#5DC1E3",
'Aberto'=> "#07D7F7",
'Faturado' => "#07F7CB",
'Em Andamento' => "#FFD724",
'Finalizado' => "#30C70A",
'Cancelado' => "#FF2B2B");
$chartOsData = array();
$chartOsData['type'] = 'pie';
$chartOsData['data'] = array();
$chartOsData['options'] = array('responsive'=>true);
foreach ($os as $o)
{
$chartOsData['data']['labels'][] = $o->status;
$chartOsData['data']['datasets']['data'][] = (int)$o->total;
$chartOsData['data']['datasets']['backgroundColor'][] = $tiposOs[$o->status];
}
?>
Das ist mein Skript mit codierten Werten:
<script type="text/javascript">
$(document).ready(function(){
var osChartc = document.getElementById('osChart').getContext('2d');
var osChart = new Chart(osChartc, <?php echo json_encode($chartOsData); ?>);
});
</script>
der documentation Laut, das ist, wie Sie ein Diagramm erstellen:
var myDoughnutChart = new Chart(ctx, {
type: 'pie',
data: data,
options: options
});
Und das ist die Art der Eingabe für die Datenvariable:
var data = {
labels: [
"Red",
"Blue",
"Yellow"
],
datasets: [
{
data: [300, 50, 100],
backgroundColor: [
"#FF6384",
"#36A2EB",
"#FFCE56"
],
hoverBackgroundColor: [
"#FF6384",
"#36A2EB",
"#FFCE56"
]
}]
};
Dies ist, was ich bekomme:
$(document).ready(function() {
var osChartc = document.getElementById('osChart').getContext('2d');
var osChart = new Chart(osChartc,{
"type": "pie",
"data": {
"labels": ["Aberto", "Em Andamento"],
"datasets": {
"data": [1, 1],
"backgroundColor": ["#07D7F7", "#FFD724"]
}
},
"options": {
"responsive": true
}
});
});
Ich glaube, das Array-Format korrekt ist, mit der Ausnahme, dass die Schlüssel haben Anführungszeichen um sie herum, und es gibt keine eckigen Klammern auf die Datensätze.
Die Grafik wird nicht gebaut, und ich bin immer diese Fehlermeldung:
Uncaught TypeError: Cannot read property 'length' of undefined
Was kann getan werden?
** 'hoverBackgroundColor' nicht obligatorisch ** – Phiter
Zitate auf den Tasten nicht relevant sind. Keine eckigen Klammern in den Datensätzen bedeutet, dass Ihre 'Datasets' ein Objekt sind, anstelle des Arrays von Objekten, die Sie wahrscheinlich erwarten. Das bedeutet, dass Sie Ihre Daten nicht so erstellen, wie Sie es benötigen. JSON ist nicht dein Problem. – deceze
Wie kann ich die Datensätze als Objekt ausgeben? – Phiter