1

一开始我想对我糟糕的英语说声抱歉。

Google Chrome、Mozilla Firefox、Opera 最新版本中的 jquery v2.0.0

今天我遇到了问题

timer_multy_update = setInterval(
    function()
    {
        $.get(
           'test.php',
           function (result){
              parseAndUpdateData(result);
           },
           "json"
        );
    }, 500)

问题是如果服务器挂起(我不知道如何正确地说),即从服务器获得答案的时间超过 0,5 秒,但计时器不会停留并继续发送请求,所以在服务器之前回答它可以发送 2-4 个请求,所有这些答案都会返回一段时间,现在有一个问题,在 firebug 中所有请求都是正确的,但变量结果只包含来自服务器的第一个答案的一个答案。也许我没有表达清楚,我想说对服务器的 2-4 次请求返回不同的答案,但结果是从服务器获得第一个答案的 2-4 次,这是个大问题。

我试图在互联网上查找信息,但一无所获。

不知道为什么,首先想到的是jquery的错误,我开始看源代码,发现有一些提到heder和它的哈希值。所以我尝试改变我的脚本并找到方法

$.get
(
    '/php/mine/update_cells.php',
    't='+Math.random(),
    function (result)
    {
        parseAndUpdateData(result);
    },
    "json"
);

它工作正常,所以我现在想,错误它是或我的错误,不理解

4

1 回答 1

0

这不是错误,它是缓存。浏览器将资源缓存一段时间然后每次有人需要时都必须去获取它的效率要高得多。这对于静态资源来说很好,即那些变化不大的资源,但对于一个经常为同一个 URL 返回不同结果的 Web 服务,您将希望禁用缓存。如果您控制服务器端代码,Cache-Control: no-cache请在响应中添加标头。您可以在 jQuery 中禁用缓存,但据我所知,您必须使用该ajax()功能 - 无法使用get().

$.ajax({
  url: "/php/mine/update_cells.php",
  success: function(result){
     parseAndUpdateData(result);
  },
  cache: false,
  dataType: 'json'
});
于 2013-08-24T06:50:09.377 回答