在控制器中,我创建了要绘制图表的数组
function chart() {
$results = $this->Visit->query(
"SELECT date(visits.created) as visit_date,
Count(visits.id) AS count_visits
FROM visits
GROUP BY date(visits.created)"
);
foreach($results AS $result) {
$row = array(
$result[0]['visit_date'],
$result[0]['count_visits']
);
$chartData[] = json_encode($row);
}
pr($chartData);
}pr($chartData)提供以下数组
Array
(
[0] => ["2012-07-11","5"]
[1] => ["2012-07-13","1"]
[2] => ["2012-07-14","1"]
)在图表视图中,我有
google.load('visualization', '1.0', {'packages':['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
// Create the data table.
var data = google.visualization.arrayToDataTable($chartData);
var options = {
title: 'Visits by Date',
hAxis: {title: 'Date', titleTextStyle: {color: 'black'}}
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}但这并不能给我一个图表..无错误...只是没有图表..
如果我手动输入一个数组来测试我的视图,它工作得很好……例如,如果我替换..
var data = google.visualization.arrayToDataTable($chartData);使用Google Chart示例中的以下格式,它会生成一个很好的柱状图
var data = google.visualization.arrayToDataTable([
['Date', 'Count'],
['2012-07-11', 5],
['2012-07-13', 1],
['2012-07-14', 1]
]);有几个问题:-我如何在var数据数组中获得标题?-数组中的双引号或单引号有区别吗?-我是否正确地将数组$chartData从php传递到Google chart javascript?- Google示例在数组周围有'[]‘,我如何也在我的数组周围获得这些标题?
(顺便说一下,我知道所有关于cakephp的Find(全部),但我只是迷失在如何获得我想要的东西的文档中,sql要简单得多)
发布于 2012-08-07 18:12:18
您在控制器中使用的是json_encode,但在视图中使用的是-
google.visualization.arrayToDataTable($chartData);json_encode创建json对象,而不是javascript数组。
在控制器函数图()中使用json_encode尝试:
$chartData['cols'] = array(
array('id' => 'visit_date', 'label' => 'Visit date', 'type' => 'date'),
array('id' => 'count_visits', 'label' => 'Count', 'type' => 'number')
);
foreach($results AS $result) {
$time = strtotime($result[0]['visit_date']);
$dateJs = 'Date('.date("Y", $time).', '.(date('n', $time) - 1).', '.date('j', $time).')';
$row = array(
'c' => array(
array('v' => $dateJs),
array('v' => $result[0]['count_visits']),
)
);
$chartData['rows'][] = $row;
}
//make the data available for view
$this->set('chartData', json_encode($chartData);在您的视图中使用:
var data = new google.visualization.DataTable($chartData);https://stackoverflow.com/questions/11497114
复制相似问题