使用PHP / JS自动刷新Highcharts

时间:2012-08-01 03:48:26

标签: php javascript jquery highcharts

我试图获得一个高图表图表,用新数据刷新每一分钟。到目前为止,我的图表是使用php输出的标题创建的javascript。

我在页面顶部有这个:

<?php
    //set the output header as JS
    Header("content-type: application/x-javascript");
    //output start of javascript chart
?>
   var chart;
   chart = new Highcharts.Chart({

然后一些PHP从数据库中获取数据,并以高图格式输出。

我现在在我的索引页面上调用图形,它显示,然后破坏图形,并重新显示图形,但它似乎没有重新运行PHP代码:

<script>
$(document).ready(function(){
    $.ajaxSetup({
        cache: false,
    });
    $.get("api_dashchart.php?uID=<?php echo $userInfo_ID; ?>");
    var refreshId = setInterval(function(){
        if(chart) chart.destroy();
        $.get("api_dashchart.php?uID=<?php echo $userInfo_ID; ?>");
    }, 45000);
});

持续的帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为你在这里混合服务器和客户端代码, 您的PHP代码将仅在服务器上执行一次,同时获取页面。

window.setInterval(function(
    displaygraph();
}, 60000);

无法更新数据,它只会重新执行displaygraph(),但此方法中的数据不会从服务器更新,但会使用在页面加载期间获取的数据,您需要使用AJAX,并且发出ajax请求以获取更新的数据,然后使用它来重新绘制具有新获取的数据的图表。尝试使用Firebug调试javascript 至于第一个加载问题,您可以使用显示图中的if语句轻松完成。

if(chart) chart.destroy();

总结一下,

charting.js

var chart;
function displaygraph() {
 $.getJSON("getjson.php", function(json) {
  if(chart) chart.destroy();
  //get data from json, and use in chart
  chart = new Highcharts.Chart({....});
});
setInterval(displaygraph, 60000);

getjson.php

<?php
  $data = ...
  echo json_encode($data);
?>

更多关于$ .getJSON @ http://api.jquery.com/jQuery.getJSON/,$ .ajax @ http://api.jquery.com/jQuery.ajax/ json-encoding in php @ http://php.net/manual/en/function.json-encode.php