2013-08-24 128 views
1

一开始我想说对不起我的英文不好。在谷歌C​​hrome,Mozilla Firefox浏览器,歌剧jquery ajax异步请求错误

jQuery的V2.0.0版本的最后

今天,我有一个问题

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

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

我试图在互联网上查找信息,但什么都没发现。

我不知道为什么,但首先想到的是,在jQuery中的错误,我开始看源代码,并发现一些关于heder和它的哈希。 所以我试图改变我的脚本,并找到办法

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

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

+0

因为你添加了math.random,url每次都不一样,所以资源没有被浏览器兑现。 –

回答

0

这是不是一个错误,这是缓存。浏览器在一段时间内缓存资源的效率会更高,然后必须每次都有人需要时才能得到它。这对于静态资源来说很好,即那些变化不大的Web服务,但是对于同一个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' 
}); 
+0

我添加标题,但它没有效果 'Accept:application/json,text/javascript,*/*; q = 0.01 Accept-Encoding:gzip,deflate,sdch Accept-Language:ru-RU,ru; q = 0.8,en-US; q = 0.6,en; q = 0.4 Cache-Control:no-cache 连接:keep-alive Cookie:id = Xb97FxROHEni7bGg; K = L4UHWE47zPhO2rEa 附注:无缓存 的User-Agent:Mozilla的/ 5.0(Windows NT的5.1)为AppleWebKit/537.36(KHTML,例如Gecko)铬/ 28.0.1500.95 Safari浏览器/ 537.36 X-请求-随着:XMLHttpRequest' – user2713024

+0

的第二种方式与我的工作方式相同) /php/land/update_cells.php?_=1377328853001 由$ .ajax发送缓存:false – user2713024

+0

@ user2713024您需要将其添加到响应标头。这些看起来像请求头。 – RobH