Jquery:多个ajax调用同一URL的行为

时间:2013-06-14 09:16:47

标签: jquery ajax

我今天遇到了一些令人惊讶的行为,并想确认这对jquery来说是正常的,而不是做一些愚蠢的行为......

我有一个函数可以调用ajax并在promise.done()上执行某些操作。以下是一个用于相同目的的简化示例。

function getRandom() {
    console.log('calling');
    var promise = $.ajax({
        url: '/getrandom/',
        type: 'GET'
    });
    promise.done(function (data) {
        console.log('got ' + JSON.stringify(data));
    });
}

出于此问题的目的,假设服务器将使用在每个请求上生成的随机数进行响应。

如果我足够快地调用此函数以便在第一个响应之前打开多个调用,那么我得到如下输出:

calling
calling
calling
got {num:3452345}
got {num:3452345}
got {num:3452345}
calling
calling
calling
got {num:2342342}
got {num:2342342}
got {num:2342342}

这对我来说非常令人惊讶,因为它暗示了某种承诺(或者jquery内部的一些机制)被覆盖了。

这是正常的预期行为吗?

由于

[jQuery v 1.8.2]

3 个答案:

答案 0 :(得分:4)

您是否尝试使用cache:false

请参阅Ajax Jquery Api Documentation

您的浏览器会在执行GET查询时缓存Ajax。您应该检查您的服务器是否收到1个查询而不是3个。

答案 1 :(得分:1)

可能,此结果已缓存。尝试使用ajax“cache:false;”参数。

答案 2 :(得分:1)

使用随机字符添加查询字符串或使用时间戳参见示例

getrandom?t=xyzrandom