MySQL 到 JSON 的结果是空的 Google 可视化图表(无数据)


MySQL to JSON results in empty Google visualisation chart(no data)

我使用以下代码从数据库中提取的数据创建饼图:

<script type="text/javascript">
  google.charts.load("current", {packages:["corechart"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var col=<?php echo json_encode($aColumn); ?>;
    var jsonString = <?php echo json_encode($v); ?>;    //Access PHP variable in JavaScript JSON STRING
    var jsonArray=JSON.parse(jsonString);
    var options = {
      pieHole: 0.5,
      pieSliceTextStyle: {
        color: 'black',
      },
      legend: 'none'
    };
    var testArray = [[col,"COUNT"]];
    $.each(jsonArray, function() {
      var item = [this[col],this.TOTAL]; //document.write(item);
      testArray.push(item);
    });
    var data = google.visualization.arrayToDataTable([testArray]);
    var chart = new google.visualization.PieChart(document.getElementById('donut'));
    chart.draw(data, options);
  }
</script>

当我尝试在谷歌可视化折线图中绘制这些数据时,图表是空的。只是页面上没有打印任何数据。

这是我第一次在PHP上工作,所以我可能错过了一些非常明显的东西。不过,任何帮助将不胜感激。

你有两种方法。

1 - 在你的代码中,第 7 行"var jsonString"已经是一个对象/数组,所以你不需要第 8 行,因为如果你不使用引号,Javascript 将理解为对象/数组,只是不需要进行解析。因此,您的输出将是这样的:

var jsonString = [...];

2 - 现在,要 Javascript 理解字符串,您需要在第 7 行加上引号,如下所示:

var jsonString = "<?php echo json_encode($v); ?>";

输出应该是这样的:

var jsonString = "[...]";

在第二种情况下,您需要解析。