谷歌图表;未捕获错误:不是数组

Google charts; Uncaught Error: Not an array

本文关键字:错误 数组 谷歌      更新时间:2023-09-26

我正在尝试使用Ajax加载Google图表,由于某种原因,被传回的数据说它不是一个数组。

这是页面上的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;
}

当我控制台.log($arrTableData)时,我得到:

 array(1) {
  [0]=>
   array(6) {
      [0]=>
     array(2) {
      [0]=>
      string(4) "Task"
      [1]=>
      string(13) "Hours per Day"
 // etc etc.. 

那么你能告诉我为什么它说没有数组以及为什么它不起作用吗?

像这样更新你的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));
    ...
}
你需要

在PHP中使用json_encode函数:

echo json_encode($arrTableData);

您需要将其他两个答案结合起来。 使用 echo json_encode($arrTableData); 将数组输出为 JSON 编码的字符串,并使用 var tableData = google.visualization.arrayToDataTable(JSON.parse(data)); 将 JSON 解码为 JavaScript 数组。