2013-10-30 21 views
0

我想使用Ajax加載Google圖表,出於某種原因,傳回的數據說它不是數組。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; 
} 

當我CONSOLE.LOG ($ arrTableData)我得到:

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

// etc etc.. 

所以,你能告訴我爲什麼它說,沒有一個數組,爲什麼它不工作?

回答

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)); 

    ... 

} 
+0

我現在得到了:Uncaught SyntaxError:意外的令牌a – MarkP

+0

什麼是完整的錯誤消息?它是在PHP還是JavaScript? – Latheesan

+0

javascript及其:未捕獲的SyntaxError:意外的令牌T?nav-filter = all:1631 initGoogleChart?nav-filter = all:1631 (匿名函數)?nav-filter = all:1616 c jquery-combined.js? 12:8 p.fireWith jquery-combined.js?12:8 k jquery-combined.js?12:10 r – MarkP

1

您需要使用PHP json_encode功能:

echo json_encode($arrTableData); 
+0

他在php中錯誤地生成數組。 – Latheesan

0

您需要結合其他兩個答案。使用echo json_encode($arrTableData);將數組輸出爲JSON編碼的字符串,並使用var tableData = google.visualization.arrayToDataTable(JSON.parse(data));將JSON解碼爲javascript數組。

+0

現在這是charts_ajax.php if($ _GET ['a'] ==「usage」){ $ arrTableData = array(''Task','每日小時數'], ['Work' ,'11'], ['Eat',2], ['Commute',2], ['Watch TV',2], ['Sleep',7] ] echo json_encode($ arrTableData); } - 仍然是相同的錯誤 – MarkP

+0

您是否更改了javascript? – asgallant

相關問題