在Chrome中,Ajax调用无故失败

时间:2013-07-23 17:57:51

标签: jquery ajax google-chrome

我有一个非常简单的Ajax调用,以1秒的间隔运行,用匹配状态更新我的页面:

var getMatches = function() {
        $.ajax({
            url: '/match',
            type: 'GET',
            success: function(data) {
                avm.matches(data);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log('Error occured: ' + errorThrown);
            }
        });
    };

这从项目一开始就运作良好,但最近开始行为不端 - 仅限Chrome。

调用不会触发 - 我在服务器端有Log :: debug,并且调用没有到达它。 Developer Tools中的网络面板不显示呼叫。 textStatus为'错误',errorThrown为空,jqXHR.status为0.发生这种情况时,如果我只是运行http://localhost/match,或者甚至打开同一页面在FireFox中 - 我得到了正确的结果。 所以这不是服务器或路由问题 - 它纯粹是在客户端。

这种行为昨天开始了,现在我也在生产服务器上观察它。它是零星的 - 如果我关闭Chrome,清理缓存等,它会再次工作 - 一段时间。缓存中是否存在阻止呼叫的内容?

有任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

听起来好像浏览器正在使用缓存的响应。尝试添加选项:

cache: false

$.ajax()来电。

答案 1 :(得分:3)

我认为你正在做这样的事情。

setInterval(ajaxFunction, 1000);

如果此ajax请求需要超过1秒才能完成,会发生什么?您将有两个待处理的ajax请求。需要的时间越长,请求就会越多,最终导致浏览器出现问题。

解决方案是实现类似于以下内容的东西。

function ajaxRequest() {
    $.ajax({
         complete: function() {
               setTimeout(ajaxReqest, 1000);
         });
    });
}