2011-12-06 71 views
2

我在加載圖像時遇到問題。圖像只在第一次加載,之後我得到相同的圖像。只有第一次去photoHandler.ashx。 這裏發生了什麼?是jQuery緩存圖像?怎麼做總是加載正確的圖像? 這是我的函數:是JQuery緩存圖像?

function getObjectFromServer() 
{ 
var hUrl = "myHandler.ashx"; 
var data = {}; 
var data.queryStringKey = "theKey"; 
$.post(hUrl, data, function(response){ 
    if(response.length>0) 
    { 
     var myObj = jQuery.parseJSON(response); 
     var $photo = $("<img alt='' class='hidden' />").load(function(){ 
      $("#photo-container").append($photo); 
      $photo.fadeIn('slow'); 
     }).attr('src', myObj.photoSrc); 
     //myObj.photoSrc contains: photoHandler.ashx?photoId=anUniqueIdentifier 
    } 
}); 
} 

編輯: 如果我去的元素與螢火蟲,我可以看到正確的「anUniqueIdentifier」。 MyHandler.ashx總是被調用。我與photoHandler.ashx有問題。我加了隨機的,但它並沒有爲我工作:

var randomQS = "&Id=" + Math.round(new Date().getTime()/1000); 
//... 
$photo.fadeIn('slow'); 
}).attr('src', myObj.photoSrc + randomQS); 

更新:

我解決它,但問題是PhotoHandler.ashx,該控制器緩存圖像,這種方式添加隨機值網址不起作用。

謝謝。

+0

如果有什麼,它是瀏覽器,而不是jQuery,它是緩存。 –

回答

3

您的瀏覽器緩存,你需要通過附加一個隨機字符串,它打破了緩存的形象:

http://domain.com/myimage.jpg?random=12893128971844 

您可以使用類似JS數學FN:Math.random()

2

嘗試添加一個時間戳到URL的末尾。將var theTime放入您的函數中,並將?和theTime附加到您的網址中。

var theTime = Math.round(new Date().getTime()/1000); 

var hUrl = "myHandler.ashx?"+theTime; 
0

添加時間戳到圖像源:

...

var $photo = $("<img alt='' class='hidden' />").load(function(){ 
    $("#photo-container").append($photo); 
    $photo.fadeIn('slow'); 
}).attr('src', myObj.photoSrc + Math.round(new Date().getTime()/1000)); 

...