-1
我想在我的項目中製作餅圖,但我在從數據庫獲取數據時遇到問題。我目前使用codeigniter和bootstrap模板,內置chart.js。圖表js餅圖未顯示使用JSON的動態數據
這裏是我的圖表表: charts
控制器:
public function loadViewExamResult($exam_no){
$this->load->model('exam_model');
$this->insertChartData($exam_no);
$data = $this->exam_model->loadChartData($exam_no);
echo json_encode($data);
$this->load->view('exam_report_chart', $data);
}
public function insertChartData($exam_no){
$this->load->model('exam_model');
$pass = $this->exam_model->passedScore($exam_no);
echo($pass);
$fail = $this->exam_model->failedScore($exam_no);
echo($fail);
$this->exam_model->insertPieData($exam_no,$pass,$fail);
}
型號:
public function loadChartData($exam_no){
$query = $this->db->query("SELECT passed, failed FROM chart where exam_no = '$exam_no';");
if($query->num_rows() > 0){
return $query->result();
}
else{
return false;
}
}
視圖(片段):
<?php
if($exams != NULL){
foreach($exams as $row){
echo '<tr>';
echo '<td>'.$row->course_code.' '.$row->section.'</td>';
echo '<td>'.$row->exam_desc.'</td>';
echo '<td>'.$row->exam_date.'</td>';
echo '<td>'.$row->duration.'</td>';
echo '<td>'.$row->total_items.'</td>';
echo '<td>'.$row->total_score.'</td>';
echo '<td> <div class="btn-group"> <a class="btn btn-success" onclick = "editExam('.$row->exam_no.')"><i class="icon_pencil-edit"></i></a> <a class="btn btn-danger" onclick = "deleteExam('.$row->exam_no.')"><i class="icon_close_alt2"></i></a> <a class="btn btn-primary" onclick="addExamKey('.$row->exam_no.')"><i class="icon_cloud-download"></i></a> <a class="btn btn-default" role="button" onclick = "viewExamResult('.$row->exam_no.')"> View Result </a> </div> </td>';
echo '</tr>';
}
}
?>
<script language="javascript">
function viewExamResult($exam_no){
$("#main-content").load("loadViewExamResult/" +$exam_no +"/").hide(500).fadeIn();
}
</script>
這裏是已經在引導模板中的chart.js文件,您只需根據您的數據對其進行自定義。我已經編輯過它,並且我認爲我在JSON部分存在問題,這就是爲什麼餅圖沒有顯示。有人可以幫我弄這個嗎?我其實對JSON和javascript知之甚少。請幫幫我。
chart.js之
$(document).ready(function() {
var numpassed =[];
var numfailed =[];
$.post("<?php echo base_url(). ;?>",
function(data){
var obj = JSON.parse(data);
$.each(obj,function(i,item){
numpassed.push(item.passed);
numfailed.push(item.failed);
});
var doughnutData = [
{
value: numpassed,
color:"#F7464A"
},
{
value : numfailed,
color : "#46BFBD"
},
];
});
new Chart(document.getElementById("doughnut").getContext("2d")).Doughnut(doughnutData);
});
但是,如何調用加載數據的控制器函數?我其實有一個錯誤。 – dubiousconquest
你現在得到的錯誤是什麼?如果base_url()是一個有效的端點,那麼您應該得到一個適用於創建圖表的數組。 – Gokhan
找不到頁面。也許是因爲加載數據的控制器沒有被調用? – dubiousconquest