0

我正在使用 JQuery 1.7.2。我正在使用 highchart 制作实时数据图表。我制作了一个 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);
            }
          });
}

@@Edited 有更多解释看起来我以前不能正确,所以我会再做一次。我的情况就像数据在上午 9 点到下午 12.30 之间出现,并且它一直保留在数据库中,直到第二天上午 7 点。因此,我的 highchart 将在上午 9 点到下午 12.30 之间每分钟获取一次数据,这运行得非常好,没有任何问题。但是,当我们在第二天早上 7 点清除所有数据并在早上 9 点开始获取新数据时,我的高点图表并没有自行清除并开始获取新数据。

但是如果我刷新我的浏览器,我会得到新的数据,而且效果很好。所以我看起来像如果我们擦除所有数据,我的 ajax 应该得到警报并重新加载页面或从 highchart 清除数据。

所以我在 ajax 调用中寻找一些事件或方法。一些专家的指导。

4

2 回答 2

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);
于 2013-05-09T10:54:46.103 回答
0

尝试在您的 $.ajax 调用中使用 data 参数来发送时间,它将区分您的每个 ajax 调用

data:{'time': new Date().getSeconds() }
于 2013-05-01T06:44:29.267 回答