无法在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 分页 create_link() 在视图页面上显示空白