php - 在传递给 google.setOnLoadCallback() 的函数中使用参数;

标签 php javascript mysql google-visualization

我正在尝试使用 Google Visualization API 来显示从 MySQL 服务器收集的数据。我想使用 PHP 获取数据,然后将其传递给 javascript 函数调用以创建图表。当我这样做时,我在将参数传递给传递给 google.setOnLoadCallback(); 的函数时遇到问题。我对网络编程相当陌生,所以请耐心等待。工作代码(几乎来自他们的文档)如下所示:

<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);

  function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Year');
    data.addColumn('number', 'Sales');
    data.addRows(4);
    data.setValue(0, 0, '2004');
    data.setValue(0, 1, 1000);
    data.setValue(1, 0, '2005');
    data.setValue(1, 1, 1170);
    data.setValue(2, 0, '2006');
    data.setValue(2, 1, 660);
    data.setValue(3, 0, '2007');
    data.setValue(3, 1, 1000);

    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    chart.draw(data, {width: 400, height: 240, title: 'Company Performance',
                      hAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
                     });
  }
</script>
</head>

<body>
  <div id="chart_div"></div>
</body>
</html>

我试图先看看是否可以在 drawChart() 函数之外设置数据并将其作为参数传递:

<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});

  var data1 = new google.visualization.DataTable();
    data1.addColumn('string', 'Year');
    data1.addColumn('number', 'Sales');
    data1.addRows(4);
    data1.setValue(0, 0, '2004');
    data1.setValue(0, 1, 1000);
    data1.setValue(1, 0, '2005');
    data1.setValue(1, 1, 1170);
    data1.setValue(2, 0, '2006');
    data1.setValue(2, 1, 660);
    data1.setValue(3, 0, '2007');
    data1.setValue(3, 1, 1000);

  google.setOnLoadCallback(drawChart(data1));

  function drawChart(data) {
    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    chart.draw(data, {width: 400, height: 240, title: 'Company Performance',
                      hAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
                     });
  }
</script>
</head>

<body>
  <div id="chart_div"></div>
</body>
</html>

我不太清楚为什么这不起作用。使用从 PHP MySQL 调用动态收集的数据创建 DataTable 对象的最佳方法是什么?感谢您的宝贵时间。

最佳答案

在第一个示例中,您将函数传递给回调,在第二个示例中,您调用该函数,然后将该调用的结果传递给回调。

尝试:

setOnLoadCallback(function(){ drawChart(data) })

关于php - 在传递给 google.setOnLoadCallback() 的函数中使用参数;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5929734/

相关文章:

php - 需要加速这个 php 脚本

javascript - 寻找与此 PHP 脚本 (XSLTProcessor) 等效的 JavaScript

javascript - Angular JS - 在 ng-init 中声明函数?

java - 如何使用Java在SQL查询中指定数据库

mysql - 查询不完整 - MYSQL

php - LONG POLLING(在 php 中)在对数据库发出 5 次请求后开始挂起

javascript - 在没有提交按钮的情况下获取下拉列表的选定值

javascript - Dropzone.js 与 mysql

php - 随机数、列和行。 PHP

javascript - AngularJS工厂服务返回 'undefined'