1

我试图获得一个高图表以每分钟刷新一次新数据。到目前为止,我已经使用在标头上作为 javascript 输出的 php 创建了图表。

我在页面顶部有这个:

<?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从数据库中获取数据,并以highcharts格式输出。

我现在在我的索引页面上有这个调用图表,它显示,然后破坏图表,并重新显示图表,但它似乎没有重新运行 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);
});

继续帮助非常感谢。

4

1 回答 1

0

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

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

不能更新数据,只会重新执行displaygraph(),但是这个方法里面的数据不是从服务器更新的,而是使用页面加载时获取的数据,需要使用AJAX,并做一个ajax请求获取更新的数据,然后使用它用新获取的数据重绘图表。尝试使用Firebug调试您的 javascript 。
至于第一个加载问题,您可以使用显示图中的 if 语句轻松完成。

if(chart) chart.destroy();

把它们加起来,

图表.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);

获取json.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

于 2012-08-02T09:34:51.570 回答