无法在Codeigniter页面上显示Morris.JS图表,使用JSON数据作为图表的输入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Codeigniter页面上显示Morris.JS图表,使用JSON数据作为图表的输入相关的知识,希望对你有一定的参考价值。

我正在使用最新的Codeigniter和MorrisJS。我已经创建了一个View for the Charts并通过JSON传递动态数据,但这似乎不起作用。我确保MorrisJS的所有依赖JS和CSS都映射到View上。当我将虚拟数据静态地提供给图表选项时,它会完美地生成图表。仅在传递JSON数据时不起作用。请你指点我,我相信我犯了一个愚蠢的错误,但我无法弄清楚。

我的看法:

<div id="myfirstchart" style="height: 250px;"></div>
    <script>
        Morris.Bar({
            element: 'myfirstchart',
            data: <?php echo $graphData; ?>,
            xkey: 'MonthName',
            ykeys: ['totalTicket'],
            labels: ['Value']
        });
    </script>

我的控制器:

    public function index(){
        $x['graphData']=json_encode($result);
        $this->load->view('common/header');
        $this->load->view('common/main_top_navbar');
        $this->load->view('reports/trends');
        $this->load->view('common/footer',$x);
    }

我的型号:

class Reports_model extends CI_Model{
    function display_monthOnMonth_records(){
        $this->db->select('MONTHNAME(CreatedOn) as MonthName, count(TicketID) as totalTicket');
        $this->db->from('TBL_tickets');
        $this->db->group_by('MonthName');
        $this->db->order_by('
            FIELD(
                MonthName,
                "January",
                "February",
                "March",
                "April",
                "May",
                "June",
                "July",
                "August",
                "September",
                "October",
                "November",
                "December"
            )
            ');
        $query=$this->db->get();
        return $query->result();
    }
}

当我运行此操作时,我会在Chrome浏览器/页面上看到检查(F12),数据显示数据输入,但它没有创建页面上的图表。

从浏览器检查结果:

<script>

        Morris.Bar({
            element: 'myfirstchart',
            data: {"data":[{"MonthName":"January","totalTicket":"2500"},{"MonthName":"February","totalTicket":"2200"},{"MonthName":"March","totalTicket":"2350"}]},
            xkey: 'MonthName',
            ykeys: ['totalTicket'],
            labels: ['Value']
        });

</script>
答案

index()方法中,更改:

    $x['graphData']=json_encode($result);

进入:

    $x['graphData']=json_encode($result->data);

从我从输出中看到的,你有额外的data父母。

以上是关于无法在Codeigniter页面上显示Morris.JS图表,使用JSON数据作为图表的输入的主要内容,如果未能解决你的问题,请参考以下文章

如何在codeigniter的不同页面上显示多个视图

Codeigniter 分页 create_link() 在视图页面上显示空白

如何使用连接表向数据库添加记录 - codeigniter

如何在codeigniter中显示json数据[重复]

MPDF PAGENO在codeigniter中无法在pdf中显示页码

只有主页显示所有其他页面在 xampp codeigniter 中显示错误 404