我试图获得一个高图表图表,用新数据刷新每一分钟。到目前为止,我的图表是使用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);
});
持续的帮助非常感谢。
答案 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