3

我尝试根据此处的示例创建饼图

在我的控制器(mycontroller/json)中,我有以下代码:

public function json(){

$whatever = '{
"cols": [
    {"id":"","label":"Topping","pattern":"","type":"string"},
    {"id":"","label":"Slices","pattern":"","type":"number"}
  ],
"rows": [
    {"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
    {"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
  ]
}';
echo $whatever;
}

在我看来,我有以下代码(显示了部分代码)

var jsonData = $.ajax({
    url: "<?= base_url()?>index.php/bunker/json",
    dataType:"json",
    async: false
    }).responseText;

// Create and populate the data table.
var popularCategory = google.visualization.DataTable(jsonData);
new google.visualization.PieChart(document.getElementById('category')).draw(popularCategory,
    {title:"Popularity by Category"});

最后我有一个名为“类别”的 div。但是,我总是收到一条消息说数据未定义。

使用 firebug 进行快速调试,我没有收到任何错误,$whatever 变量也被视为正确的 JSON 格式。我在这里犯了什么错误?

干杯,

4

3 回答 3

1

代替:

var popularCategory = google.visualization.DataTable(jsonData);

你必须有:

var popularCategory = new google.visualization.DataTable(jsonData);
于 2013-05-02T02:08:22.080 回答
0

试试 php json 编码功能:

echo json_encode($whatever);

此外,请确保您开始使用 console.log(jsonData),因为浏览器控制台将输出类似于 php 中的 print_r 的“jsonData”变量。我从来没有第一次得到正确的 json 格式,所以 console.log(jsonData) 功能绝对是杀手。

于 2013-05-01T19:04:12.553 回答
0

您的 json 变量的数据格式不正确。请在此处查看饼图示例:

https://google-developers.appspot.com/chart/interactive/docs/gallery/piechart

于 2013-05-01T12:52:03.510 回答