Chrome拒绝在请求中止后将Ajax请求发送到相同的URL

时间:2013-09-10 18:05:05

标签: javascript asp.net ajax google-chrome iis-express

我很确定这是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
    })

我可以离开它,但我想了解为什么会这样,而不需要这个黑客。

1 个答案:

答案 0 :(得分:2)

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

另一种选择是将缓存设置为false(使用.ajax()),有趣的是,只需为您添加时间戳。

.ajax() docs

$.ajax({
    /* ... */
    cache: false
});