我有一个 ajax 调用,每五秒触发一次以更新屏幕上的一些数据。似乎 getJSON 在页面刷新后中断。似乎正在发生的事情是,如果在调用过程中通过 F5 刷新页面,则将来的调用将不起作用。他们只是失败了,没有错误消息。textStatus 为错误,但 errorthrown 为空。我正在调用一个 Asp.Net MVC 控制器并且那里没有触发错误。随后的 getJSON 调用从未命中服务器。在我再次启动和停止我的网站之前,它已经非常紧张了。不知道如何解决这个问题,因为我无法阻止用户刷新页面,而且测试更新对我来说很痛苦。
这是我的代码:
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 中重现。也许是 chrome 中的错误,或者我错过了什么?