2013-08-24 51 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