我想使用 ChartJS 和 PHP ( Silex Framework ) 制作图表
这是我的ajax调用
$.ajax({ url: 'stats',
data: {method: 'dossierRepartitionType'},
type: 'post',
datatype: 'json',
success: function(output) {
dataDossierRepartitionType=output;
},
error: function () {
alert("Oops there is an error.");
}});
这是我设法调用的 PHP 函数
public function dossier(){
$stmt = "SELECT count(*) FROM dossier GROUP BY typedossier";
$stmt = $this->db->prepare($stmt);
$rows=$stmt->execute();
$rows = $stmt->fetch(PDO::FETCH_NUM);
return ?????
这是我的图表:
var ctx = document.getElementById("myChart");
ctx.width = 400;
ctx.height = 400;
data = {
datasets: [{
data: [dataDossierRepartitionType, 20],
backgroundColor: [
'rgb(255, 99, 132)',
'rgb(54, 162, 235)',
],
borderColor: [
'white',
'white',
],
borderWidth: 1
}],
// These labels appear in the legend and in the tooltips when hovering different arcs
labels: [
'Red',
'Blue',
]
};
var myDoughnutChart = new Chart(ctx, {
type: 'doughnut',
data: data,
options: {
legend: {
labels: {
fontColor: "white",
fontSize: 18
}
},
maintainAspectRatio: false,
responsive: false
}
});
路由.php
$app->post('/stats', function () use ($app) {
session_start();
if(isset($_POST['method']) && !empty($_POST['method'])) {
$method = $_POST['method'];
switch($method) {
case 'dossierRepartitionType' :
$dossiers=$app['dao.dossier']->dossierRepartitionType();
break;
}
}
return new ResponseSilex("$dossiers");
});
所以我的 AJAX 调用路由,然后将函数的结果放入响应中输出的 $dossiers
,我做对了吗?
我如何返回一个包含每个计数的所有数据值的数组? 我努力捕捉错误并找到将 MYSQL 计数值绑定(bind)到我的图表的正确方法
谢谢
最佳答案
主要思想是你应该在你的模型中格式化你的数据,然后通过json_encode
返回JSON给前端。之后,您将解析 ajax 返回中的 json,然后将适当的数据传递给图表。
关于php - ChartJS 和 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44849892/