1

我很确定这是 chrome 中的一个错误,因为它不会在 IE 10 中发生并且它最近才开始,但基本上是在对 URL 进行 AJAX 调用并且用户在请求期间刷新浏览器时,所有对之后相同的网址将失败。即使我再次刷新浏览器,请求也会失败。我可以解决它的唯一方法是添加时间戳以使每个请求都独一无二,但这似乎是一种黑客行为。我在这里错过了什么吗?

如果您有一个中止的请求,这将永远不会再次起作用:

        $.getJSON("realTimeActivity/GetRealTimeData",
            function (result) {
                // Do stuff
            }
        ).fail(function (jqXHR, textStatus, errorThrown) {
            // No error message comes back
        })

然而,这每次都有效:

    $.getJSON("realTimeActivity/GetRealTimeData?u=" + (new Date).getTime(),
        function (result) {
            // Do stuff
        }
    ).fail(function (jqXHR, textStatus, errorThrown) {
        // No error message comes back
    })

我可以离开它,但我想了解为什么会这样并且不需要这个 hack。

4

1 回答 1

2

这是因为缓存,并且因为 URL 与以前相同,因此它忽略它。通过附加时间戳,使 URL 不同,每个请求都会通过。

另一个选项是将缓存设置为 false(使用 .ajax()),有趣的是,它只是为您附加了一个时间戳。

.ajax() 文档

$.ajax({
    /* ... */
    cache: false
});
于 2013-09-10T18:08:11.387 回答