我正在使用JQuery 1.7.2。我正在使用高图制作实时数据图表。 我做了一个C#页面,在页面上加载我正在写一些jSON格式数据,我正在另一个页面中使用帮助ajax调用highcharts。我将在函数内运行ajax调用,并且在ajax调用的成功事件中,我将在1分钟后再调用setTimeout来调用函数,所以每次都会得到最新的数据。直到这里一切都很好。
但我有问题让我说数据我每1分钟只获得4小时的数据,而不是让我的浏览器打开并且第二天来。那个时候我的aspx页面将从零开始新的新数据开始,所以我的highcharts应该自动删除所有点并且应该推送新数据但是它没有这样做。当我刷新我的页面时,一切都将开始运作良好。无论如何它应该自己刷新
我的ajax调用代码如下
function recieveData() {
var pathArray = window.location.pathname.split( '/' );
var chart = $('#container').highcharts();
$.ajax({
url: '/' + pathArray[1] + '/HomePageChartData.aspx',
dataType: 'json',
cache: false,
success: function (data) {
chart.yAxis[0].setExtremes(data.minY, data.maxY, true, true);
chart.series[1].setData([]);
chart.series[1].name = data.lineSeriesName;
chart.series[0].setData([]);
chart.series[0].name = data.areaSeriesName;
for (var x in data.lineSeriesData) {
chart.series[1].addPoint([data.lineSeriesData[x][0], data.lineSeriesData[x][1]]);
}
for (var x in data.areaSeriesData) {
chart.series[0].addPoint([data.areaSeriesData[x][0], data.areaSeriesData[x][1]]);
}
setTimeout(recieveData, 60000);
}
});
}
@@编辑了更多解释 看起来我以前不能正常,所以我会再做一次。我的方案就像数据在上午9点到下午12点30分之间,它一直保留在数据库中,直到第二天上午7点。所以我的高清图将在上午9点到下午12点30分之间每分钟获得数据,这是非常好的,没有任何问题。但是当我们在第二天早上7点清除所有数据并且我们在上午9点开始获取新数据时,问题就出现了,我的高图表并没有自行清理并开始获取新数据。
但是,如果我刷新浏览器,我将获得新数据并且效果很好。所以我看起来像是在擦除所有数据,我的ajax应该提醒并重新加载页面或从高清图中清除数据。
所以我在ajax调用中寻找一些事件或方法。专家的一些指导。
答案 0 :(得分:0)
尝试在$ .ajax调用中使用data参数发送时间,它将区分您的每个ajax调用
data:{'time': new Date().getSeconds() }
答案 1 :(得分:0)
您可以将实际时间与第二天进行比较,计算间隔,然后将超时设置为重新加载页面,代码段:
var now = new Date(),
time = (new Date(now.getFullYear(), now.getMonth(), now.getDate()+1), 7).getTime() - now.getTime(); //calculate next day 00:07:00 in ms
setTimeout(function () {
document.location.reload(true);
}, time);