首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery异步请求错误

jquery异步请求错误
EN

Stack Overflow用户
提问于 2013-08-24 06:14:09
回答 1查看 79关注 0票数 1

一开始,我想为我糟糕的英语说声对不起。

jquery v2.0.0在Google Chrome,Mozilla Firefox,Opera最后版本中

今天我遇到了一个问题

代码语言:javascript
复制
timer_multy_update = setInterval(
    function()
    {
        $.get(
           'test.php',
           function (result){
              parseAndUpdateData(result);
           },
           "json"
        );
    }, 500)

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

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

我不知道为什么,但第一个想法是jquery中的错误,我开始查看源代码,并发现一些关于heder和它的哈希。所以我试着改变我的脚本

代码语言:javascript
复制
$.get
(
    '/php/mine/update_cells.php',
    't='+Math.random(),
    function (result)
    {
        parseAndUpdateData(result);
    },
    "json"
);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-24 06:50:09

这不是bug,而是缓存。对于一个浏览器来说,缓存一段时间的资源效率要高得多,然后每次有人想要的时候都得去获取它。对于静态资源来说,这是可以的,即那些变化不大的资源,但是对于经常返回相同URL的不同结果的web服务,则需要禁用缓存。如果控制服务器端代码,则向响应中添加Cache-Control: no-cache头。您可以在jQuery中禁用缓存,但据我所知,您必须使用ajax()函数--没有办法使用get()

代码语言:javascript
复制
$.ajax({
  url: "/php/mine/update_cells.php",
  success: function(result){
     parseAndUpdateData(result);
  },
  cache: false,
  dataType: 'json'
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18415584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档