首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getJSON中断页面刷新(F5)。怎么修?

getJSON中断页面刷新(F5)。怎么修?
EN

Stack Overflow用户
提问于 2013-09-05 18:05:05
回答 1查看 252关注 0票数 1

我有一个ajax调用,它每隔5秒启动一次,以更新屏幕上的一些数据。在页面刷新之后,getJSON似乎会中断。看起来正在发生的是,如果页面在调用发生时通过F5刷新,那么未来的调用将无法工作。它们只是在没有错误消息的情况下失败。textStatus是错误,而错误抛出是空的。我正在调用一个Asp.Net MVC控制器,没有错误在那里触发。随后的getJSON调用从未命中服务器。直到我再次启动和停止我的网站之前,我的网站几乎都是水龙头。不知道如何解决这个问题,因为我无法阻止用户刷新页面,这对我来说是一个测试更新的痛苦。

这是我的代码:

代码语言:javascript
复制
var RealTimeActivity = (function () {
    var realTimeActivity = {};
    var timer = null;
    var active = false;

    realTimeActivity.LastUpdated = new Date();

    function queueUpdate() {
        timer = setTimeout("RealTimeActivity.Update();", 5000);
    }

    function reset() {
        clearTimer();
        queueUpdate();
    }

    function clearTimer() {
        if (timer) {
            clearTimeout(timer);
            timer = null;
        }
    }

    realTimeActivity.Update = function () {
        try {
            clearTimer();
            if (active === true) {
                $.getJSON("realTimeActivity/GetRealTimeData",
                    function (result) {
                        if (result.Success) {
                           // do stuff
                        } else {
                           // Other stuff
                        }

                        queueUpdate();
                    }
                ).fail(function (jqXHR, textStatus, errorThrown) {
                    console.log(textStatus + ": " + errorThrown);
                    reset();
                })
            }
        } catch (ex) {
            reset();
        }
    }

    realTimeActivity.Start = function (i) {
        active = true;
        if (i) {
            realTimeActivity.Update();
        } else {
            queueUpdate();
        }
    }

    realTimeActivity.Stop = function () {
        active = false;
        clearTimer();
    }

    return realTimeActivity;
}());

编辑:,这似乎只能在Chrome中重现。可能是铬里的虫子还是我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-10 17:58:27

这似乎是Chrome和中止请求的缓存问题。即使在刷新页面之后,它也不允许我在请求中止后发送另一个请求到相同的URL。我通过使每个请求都是唯一的(通过一个时间戳)来解决这个问题。

代码语言:javascript
复制
  postRequest('realTimeActivity/GetRealTimeData?u=' + (new Date).getTime(), null, function (response) {

显然,您也可以调用$.ajax并将缓存设置为false,这在幕后也是如此。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18643101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档