【问题标题】:Chart js pie chart not showing dynamic data using JSONChart js饼图未使用JSON显示动态数据
【发布时间】:2017-09-18 18:35:59
【问题描述】:

我正在尝试在我的项目中制作饼图,但在从数据库中获取数据时遇到问题。我目前正在使用带有内置 chart.js 的 codeigniter 和引导模板。

这是我的图表: 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;
        }
    }

查看(sn-p):

  <?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);

});

【问题讨论】:

    标签: javascript json twitter-bootstrap codeigniter chart.js


    【解决方案1】:

    现在您正在尝试创建图表,而无需等待您的通话后返回数据。将您的图表创建代码移动到 $.post 回调中,如下所示:

    $.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);
    });
    

    【讨论】:

    • 但是如何调用加载数据的控制器函数呢?我实际上有一个错误。
    • 您现在遇到的错误是什么?如果 base_url() 是一个有效的端点,你应该在那里得到一个合适的数组,你将使用它来创建你的图表。
    • 找不到页面。可能是因为没有调用加载数据的控制器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多