javascript - google 图表未在 php 中使用 ajax 调用显示

标签 javascript php jquery json ajax

这是我的 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 数据输出示例:**

{"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}]}]

}

<小时/>

这是我的 Ajax 函数,我在其中从 array.php 计算数据

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

var data = new google.visualization.DataTable(JSON.parse(jsonData)); 变量选项= { 标题:“我的日常事件” }; var Chart = new google.visualization.PieChart(document.getElementById('piechart')); 图表.draw(数据,选项);

**但我仍然遇到错误,请帮助**

最佳答案

好的,我已将您的 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);

注意两件事:

  • Ajax 调用中的 async:false。这实际上违背了 Ajax 的本质,但这就是 google 显示示例的方式,也是解决问题的最简单方法。

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

这对我有用,希望它能解决您的问题。

关于javascript - google 图表未在 php 中使用 ajax 调用显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35460108/

相关文章:

jquery - 访问和/或操作元素的 angular 2/typescript 方式是什么?

javascript - Typescript 无法解析 json 文件?

php - 如何使用 phpquery 查找标签名称?

php - 比较 mysql 和 php 中的两个数组

php - 捕获 PayPal 订阅取消

javascript - 我可以使用 AngularJs 指令将样式应用于伪元素吗

php - 如何提交 PHP 表单而不重定向到操作文件? (使用ajax发送和获取数据)

javascript - 正则表达式字边界(退格)测试用例

javascript - 谷歌地图 api 在谷歌浏览器扩展中不起作用

Javascript 在 Canvas 上生成点字体