谷歌排行榜;未捕获错误:不是数组

时间:2013-10-30 16:17:38

标签: javascript ajax arrays google-visualization

我正在尝试使用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.. 

那你能不能告诉我为什么没有一个阵列以及为什么它不起作用?

3 个答案:

答案 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数组。