jquery ajax异步请求错误

时间:2013-08-24 06:14:10

标签: javascript jquery ajax

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

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

今天我遇到了问题

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"
);

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

1 个答案:

答案 0 :(得分: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'
});