使用ajax实现Google Visualization图表重新加载

use*_*444 0 php ajax charts google-visualization

一直在环顾网络,但到目前为止找不到任何东西......任何人都可以帮忙吗?

我创建了一个简单的html页面,其中包含一个值列表框,在选中时会调用单独的php脚本来运行数据库查询并打印出结构html页面.这是使用ajax调用实现的,当用户更改列表框中的值时,会导致页面重新加载.

现在,我想摆脱使用html标签生成表格并打印状态更加光滑并发现谷歌可视化API.我已经准备好通过网站的许多页面并使用代码操场,但无法找到信息来帮助我理解如何使用可视化API生成表并将其传递回div标签中的主页面,使用相同的PHP脚本.

有没有人有任何指针,或过去经历过这样的经历?

谢谢.

oli*_*oli 7

你可以使用jQuery AJAX和你的php生成的一些数组来实现这一点.这是一个非常基本但直截了当的方法 - 你可能想要浏览一下php客户端库,如果这证明是不够的,你可以在php中为你生成gviz代码.

这是一个有效的例子:

HTML文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("jquery", "1.6.1");
      google.load('visualization', '1', {packages: ['table']});
    </script>
    <script type="text/javascript">

    function drawVisualization(dataFromAjax) {
      var data = google.visualization.arrayToDataTable(dataFromAjax);
      visualization = new google.visualization.Table(document.getElementById('table'));
      visualization.draw(data);
    }

    function makeAjaxCall() {
      $.ajax({url:'test.php',
              data: {},
              success: function(responseData) {
                         // eval just for testing - make safer
                         var arrayForGviz = eval("(" + responseData + ")");
                         drawVisualization(arrayForGviz);
                       }
        });
    }
    </script>
  </head>
  <body>
    <input type="button" onclick="makeAjaxCall();return false;" value="Click to get data"></input>
    <div id="table"></div>
  </body>
</html>
?
Run Code Online (Sandbox Code Playgroud)

PHP文件

<?php
echo "[['Country','City','Value'],
       ['Ireland','Dublin','10'],
       ['France','Paris','15']]"
?>
Run Code Online (Sandbox Code Playgroud)

显然我的php文件是静态的,但每次用户与页面交互并触发makeAjaxCall()时,您可以发送不同的参数,并返回不同的数组响应.

  • 我不知道该怎么感谢你才足够! (2认同)