2012-12-14 161 views
0

是否有人能夠確定,如何停止jQuery緩存它抓取的圖像,並再次顯示相同的圖像?jQuery不會加載更新的圖像

基本上圖像被重新上傳每隔5秒,因爲它作爲一個網絡攝像頭(如果你檢查圖像的右下角的時間標記,你可以,如果它被更新或告知不)

http://colourednoise.co.uk/scripts/index.htm

謝謝

(對不起,我忘了打糊爲代碼)

$(function(){ 
$(document).ready(function() { 
    var imgs = ['http://www.ramseycommunityradio.co.uk/images/webcam.jpg', 'http://www.ramseycommunityradio.co.uk/images/webcam.jpg'] 
    $("#webcam").attr('src', imgs[1]); 
    var refreshId = setInterval(function() { 
     $("#webcam").fadeOut("slow", function() { 
      var $el = $(this); 
      $el.attr('src', $.inArray($el.attr('src'), imgs) === 0 ? imgs[1] : imgs[0]); 
      $el.fadeIn("slow"); 
     }); 
    }, 2000); 
}); 
+2

請提供您的代碼在這裏,這樣,這將是有幫助的其他人 – svillamayor

+0

可能重複:http://stackoverflow.com/questions/13876551/jquery-get-doesnt-接收最新版本的服務器上的文件/ 13876579 – tborychowski

+0

請編輯您的文章以包含您的代碼,因爲評論不會保持格式! – n00dle

回答

2

代碼:

var imgs = ['http://www.ramseycommunityradio.co.uk/images/webcam.jpg', 'http://www.ramseycommunityradio.co.uk/images/webcam.jpg'] 
    $("#webcam").attr('src', imgs[1]); 
    var refreshId = setInterval(function() { 
     $("#webcam").fadeOut("slow", function() { 
      var $el = $(this); 
      $el.attr('src', $.inArray($el.attr('src'), imgs) === 0 ? imgs[1] : imgs[0]); 
// this condition is redundant, it will ultimately give the same result always 
// because imgs[0]==imgs[1] 

      $el.fadeIn("slow"); 
     }); 
    }, 2000); 

就一個jQuery關注你是而不是改變SRC屬性(JQuery對圖像的內容一無所知)。嘗試在服務器端使用兩個不同的名稱,如webcam0.jpgwebcam1.jpg,並在它們之間交替。

+0

這打擊了頭部!花了我一兩分鐘,看看發生了什麼,但現在有道理。謝謝 :-) –

5

你可以嘗試追加變化闕ry字符串到URL上,這應該停止緩存,如果這確實是你的問題。我已經看到了這個帶有時間戳在這裏完成:how to generate and append a random string using jquery

所以每次生成圖像時,你做的事:

var qs = (new Date).getTime(); 
var url = 'http://www.example.com/images/myimage.jpg?' + qs; 
$(el).attr('src',url); 
1

一個竅門是追加一個隨機查詢字符串URL,導致圖像從服務器重新加載。該代碼可以是這樣的:

setInterval(function() { 
    var img = $("#img").get(0); 
    img.src = img.src.replace(/\?.*/, "") + "?" + Math.random(); 
}, 5000);