2013-11-04 37 views
0

我无法正确显示Google图表。我试图用Ajax和PHP来做到这一点。Google图表无法正确显示值

这是在页面上加载代码:

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
<script type='text/javascript'> 

    // Dummy Array for now 
    <?php 
     $php_array = array(
     array('Terms', 'Visits'), 
     array('test', 25), 
     array('joke', 25), 
     array('funny', 50), 
    ); 

    //Convert the PHP Array into a Javascript Array 
    $js_array = json_encode($php_array); 
    echo "var arrTableData = ". $js_array . ";\n"; 
    ?> 

    google.load("visualization", "1", {packages:["corechart"]}); 
    google.setOnLoadCallback(drawCharts); 

    function drawCharts(){ 

     // Each chart function 

     $.getJSON('charts_ajax.php',{'a' : 'terms', 'd' : arrTableData }, function(data){ 

      if(data){ 

       initGoogleChart(data) 

      }else { 
       console.log("There is no data coming back"); 
      } 
     }); 


    } 
    function initGoogleChart(data){ 

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

     var options = { 
      title: 'Title' 
     }; 

     var chart = new google.visualization.PieChart(document.getElementById('terms-table')); 
     chart.draw(tableData, options); 
    } 
</script> 

,并在charts_ajax.php文件中,有这样的数据:

<?php 
if ($_GET['a'] == "terms") { 

    $arrTableData = $_GET['d']; 

    echo json_encode($arrTableData); 
} 
?> 

这就是下图是输出:

GoogleChart Output

有没有人可以对此进行说明,po可以帮我修好吗?

+0

在您的'$ .getJSON'调用的回调函数中,添加以下行:console.dir(data);',在Chrome或Firefox中打开页面,并查看开发者的控制台。应该有一行输出数据的内容。它看起来像什么,它是一个字符串还是一个javascript数组(如果它是一个javascript数组的JSON字符串表示形式,这是一个重要的区别)? – asgallant

回答

0

您是否试过将数据转换为Google Charts JSON格式?这是一个例子。

foreach($arrTableData as $r2) { 
     if(!isset($google_JSON2)) {  
      $google_JSON2 = "{\"cols\": ["; 
      $column = array_keys($r2); 

      foreach($column as $key=>$value) { 
       $google_JSON_cols2[]="{\"id\": ".$key.", \"label\": \"".$value."\", \"type\": \"string\"}"; 
      }  

      $google_JSON2 .= implode(",",$google_JSON_cols2)."],\"rows\": ["; 
     }