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

Javascript 无法使用JSON数据作为图表的输入在Codeigniter页面上显示Morris.JS图表,javascript,php,json,codeigniter,morris.js,Javascript,Php,Json,Codeigniter,Morris.js,我正在使用最新的Codeigniter和MorrisJS。 我已经为图表创建了一个视图,并通过JSON传递动态数据,但这似乎不起作用。 我已经确保MorrisJS的所有依赖JS和CSS都映射到视图上。 当我将虚拟数据静态地输入到图表选项中时,它会完美地生成图表。 只有在传递JSON数据时才起作用。 请你能在这方面指导我吗?我肯定我犯了一个愚蠢的错误,但我没办法弄明白 我的看法是: <div id="myfirstchart" style="height: 250px;"></d

我正在使用最新的Codeigniter和MorrisJS。 我已经为图表创建了一个视图,并通过JSON传递动态数据,但这似乎不起作用。 我已经确保MorrisJS的所有依赖JS和CSS都映射到视图上。 当我将虚拟数据静态地输入到图表选项中时,它会完美地生成图表。 只有在传递JSON数据时才起作用。 请你能在这方面指导我吗?我肯定我犯了一个愚蠢的错误,但我没办法弄明白

我的看法是:

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

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浏览器/page Inspect(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>

莫里斯酒吧({
元素:“myfirstchart”,
数据:{“数据”:[{“MonthName”:“一月”,“totalTicket”:“2500”},{“MonthName”:“二月”,“totalTicket”:“2200”},{“MonthName”:“三月”,“totalTicket”:“2350”}]},
xkey:“MonthName”,
ykeys:['totalTicket'],
标签:['Value']
});
索引()方法中,更改:

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

    $x['graphData']=json_encode($result->data);
从输出中我看到,您有额外的
数据
父项。

index()方法中,更改:

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

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

从我从输出中看到,您有额外的
数据
parent。

我尝试进行您提到的更改,但仍然失败<代码>$x['graphData']=json_编码($result->data)我收到以下错误:严重性:注意消息:尝试获取非对象的属性“数据”。在浏览器上,我看到:
Morris.Bar({element:'myfirstchart',data:null,xkey:'MonthName',ykeys:['totalTicket'],labels:['Value']})将其更改为:
x['graphData']=json_encode($result['data'])?太好了!这个很好用<代码>$x['graphData']=json_encode($result['data'])成功了。我尝试了你提到的更改,但还是失败了<代码>$x['graphData']=json_编码($result->data)我收到以下错误:严重性:注意消息:尝试获取非对象的属性“数据”。在浏览器上,我看到:
Morris.Bar({element:'myfirstchart',data:null,xkey:'MonthName',ykeys:['totalTicket'],labels:['Value']})将其更改为:
x['graphData']=json_encode($result['data'])?太好了!这个很好用<代码>$x['graphData']=json_encode($result['data'])成功了。