我正在尝试使用Ajax加载Google Chart,但出于某种原因,传回的数据表明它不是数组。
以下是我希望图表显示的页面上的Javascript:
<script>
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawCharts);
function drawCharts(){
// Each chart function
$.get('charts_ajax.php',{a : 'usage'}, function(data){
if(data){
initGoogleChart(data)
}
});
}
function initGoogleChart(data){
var tableData = google.visualization.arrayToDataTable(data);
var options = {
title: 'My Daily Activities'
};
var chart = new google.visualization.PieChart(document.getElementById('terms-table'));
chart.draw(tableData, options);
}
</script>
在charts_ajax.php文件中有以下内容:
if ($_GET['a'] == "usage") {
$arrTableData = array([
['Task', 'Hours per Day'],
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
echo $arrTableData;
}
当我在console.log($ arrTableData)时,我得到:
array(1) {
[0]=>
array(6) {
[0]=>
array(2) {
[0]=>
string(4) "Task"
[1]=>
string(13) "Hours per Day"
// etc etc..
那你能不能告诉我为什么没有一个阵列以及为什么它不起作用?
答案 0 :(得分:4)
像这样更新你的php函数:
if ($_GET['a'] == "usage") {
$arrTableData = array(
array('Task', 'Hours per Day'),
array('Work', 11),
array('Eat', 2),
array('Commute', 2),
array('Watch TV', 2),
array('Sleep', 7)
);
echo json_encode($arrTableData);
}
在你的javascript函数中试试这个:
function initGoogleChart(data) {
var tableData = google.visualization.arrayToDataTable(JSON.parse(data));
...
}
答案 1 :(得分:1)
您需要在PHP中使用json_encode
函数:
echo json_encode($arrTableData);
答案 2 :(得分:0)
您需要结合其他两个答案。使用echo json_encode($arrTableData);
将数组输出为JSON编码的字符串,并使用var tableData = google.visualization.arrayToDataTable(JSON.parse(data));
将JSON解码为javascript数组。