2013-10-30 3 views
0

Ajax를 사용하여 Google Chart를로드하려고하는데 어떤 이유로 전달되는 데이터에 배열이 아니라고 표시됩니다.Google 차트; 잡히지 않은 오류 : 배열이 아닙니다.

내가 디스플레이로 차트에 대한하려는 페이지에 자바 스크립트 여기에 있습니다 :이

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

은 자바 스크립트 기능이 시도 : 당신이 필요로하는

echo json_encode($arrTableData); 
+0

지금 잡았습니다 : 잡히지 않은 SyntaxError : 예기치 않은 토큰 – MarkP

+0

무엇이 완전한 오류 메시지입니까? 그것은 PHP 또는 JavaScript에 있습니까? – Latheesan

+0

javascript 및 그 : Uncaught SyntaxError : 예기치 않은 토큰 T? nav-filter = all : 1631 initGoogleChart? nav-filter = all : 1631 (익명 함수) nav-filter = all : 1616 c jquery-combined.js? 12 : 8 p.fire와 jquery-combined.js? 12 : 8 k jquery-combined.js? 12 : 10 r – MarkP

1

당신은 PHP에서 json_encode 기능을 사용할 필요가 다른 두 가지 답변을 결합하십시오. echo json_encode($arrTableData);을 사용하여 배열을 JSON 인코딩 문자열로 출력하고 var tableData = google.visualization.arrayToDataTable(JSON.parse(data));을 사용하여 JSON을 javascript 배열로 디코딩하십시오.

+0

그는 php에서 배열을 잘못 생성하고있다. – Latheesan

0

:

function initGoogleChart(data) { 

    var tableData = google.visualization.arrayToDataTable(JSON.parse(data)); 

    ... 

} 
+0

지금은 ($ _GET [ 'a'] == "사용") { $ arrTableData = array ([작업 ','시간 '], [작업] , 11], [ 'Eat', 2], [ 'Commute', 2], [ 'TV 시청', 2], [ 'Sleep', 7] ]]; echo json_encode ($ arrTableData); } - 여전히 같은 오류 – MarkP

+0

자바 스크립트도 변경 했습니까? – asgallant

관련 문제