首页 文章

谷歌图表没有显示与PHP中的ajax调用

提问于
浏览
0

这是我的array.php,其中json数据来自数据库,我从下面的脚本中得到了完美的结果

$table = [];
  $table['cols'] = array(
      array('id' => '', 'label' => 'Topping', 'type' => 'string'),
      array('id' => '', 'label' => 'Slices', 'type' => 'number')
      );    

$tableName = array('1' => "tb", '2' => 'tb1');
foreach ($tableName as $key => $value) {

    $row = [];
    $qry = "SELECT topping, slices FROM $value";
    $result = mysqli_query($con,$qry);
     foreach ($result as $row) {
        $temp = [];
          $temp[] = array('v' => (string) $row['topping']);
      $temp[] = array('v' => (int) $row['slices']); 
      $rows[] = array('c' => $temp);        
     }
     $result->free();
             $table['rows'] = $rows;
}
mysqli_close($con);
$jsonTable = json_encode($table, true);
echo $jsonTable;

** Array.php数据输出Ex:**

{"cols":[{"id":"","label":"Topping","type":"string"},{"id":"","label":"Slices","type":"number"}],"rows":[{"c":[{"v":"MAX"},{"v":150}]},{"c":[{"v":"MAX1"},{"v":59}]},{"c":[{"v":"MAX2"},{"v":15}]},{"c":[{"v":"MAX3"},{"v":153}]},{"c":[{"v":"MAX4"},{"v":8}]},{"c":[{"v":"MAX5"},{"v":25}]},{"c":[{"v":"MAX6"},{"v":65}]}]

}


This is my Ajax Function where i caling data from array.php

var jsonData = $.ajax({
url: "array.php",
dataType:"json",
}).responseText;

var data = new google.visualization.DataTable(JSON.parse(jsonData)); var options = {title:'My Daily Activities'}; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(数据,选项);

但我仍然有错误,请帮助

1 回答

  • 2

    好的,我已经将你的json输出复制到一个php文件(jsondata.php)中,如下所示:

    $out = '{"cols":[{"id":"","label":"Topping","type":"string"},{"id":"","label":"Slices","type":"number"}],"rows":[{"c":[{"v":"MAX"},{"v":150}]},{"c":[{"v":"MAX1"},{"v":59}]},{"c":[{"v":"MAX2"},{"v":15}]},{"c":[{"v":"MAX3"},{"v":153}]},{"c":[{"v":"MAX4"},{"v":8}]},{"c":[{"v":"MAX5"},{"v":25}]},{"c":[{"v":"MAX6"},{"v":65}]}]}';
    echo $out;
    

    使用它,我已经修改了一点你的JavaScript

    var jsonData = $.ajax({
          url: "jsondata.php",
          dataType: "json",
          async: false
          }).responseText;
    
      // Create our data table out of JSON data loaded from server.
      var data = new google.visualization.DataTable(jsonData);
    
      // Instantiate and draw our chart, passing in some options.
      var chart = new google.visualization.PieChart(document.getElementById('piechart'));
      var options = { title: 'My Daily Activities' };
      chart.draw(data, options);
    

    注意2件事:

    • Ajax调用中的 async:false . 这实际上违背了Ajax的本质,但它是谷歌展示示例的方式,它也是解决问题的最简单方法 .

    • var data = new google.visualization.DataTable(jsonData);

    这对我有用,希望它能解决你的问题 .

相关问题