我有一个必须定期刷新的页面(每15分钟一次)。该页面包含使用Highcharts创建的多个图表。
当页面加载后,我通过Ajax读取图表和其他变量信息。每个图表有几个调用服务器,一个用于状态信息。 (我把它减少到只有一张图表进行测试)。
在Ajax调用函数结束时,我设置了一个超时时间,在十五分钟内调用相同的函数:
userId = '1';
function loadStatus()
{
var graphdata = $.ajax({
url: "statusgraph.php",
global: false,
type: "POST",
dataType: "json",
data: {user: userId, targetdiv: 'statuschart'},
success: function(data) {
}
}).responseText;
var graph = JSON.parse(graphdata);
var tgraph = new Highcharts.Chart(graph.chart);
var statusinfo = $.ajax({
url: "statusinfo.php",
global: false,
type: "POST",
dataType: "html",
data: {user: userId},
success: function(data) {
}
}).responseText;
$("#statusinfo").html(statusinfo);
// works fine if the following lines are commented out
var delay = 15*60*1000; // 15 minutes
window.setTimeout(function(){
loadStatus();
}, delay);
}
结果是图表将获得标题和轴,但实际图表不会呈现。
如果我等待超时触发,状态信息会更新并且图表会重新绘制,但仍然不会绘制条形图。
如果我注释掉setTimeout命令,那么图表就会完美呈现。