JQuery кэширует изображение? - PullRequest
2 голосов
/ 07 декабря 2011

У меня проблемы с функцией загрузки изображения.Изображение загружается только в первый раз, после этого я получаю то же изображение.Только первый раз заходит на photoHandler.ashx.Что здесь происходит?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
    }
 });
}

Редактировать: Если я иду к элементу с firebug, я могу видеть правильный 'anUniqueIdentifier'.MyHandler.ashx всегда называется.У меня проблемы с photoHandler.ashx.Я добавил в случайном порядке, но у меня это не работает:

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

Обновление:

Я решил, проблема в PhotoHandler.ashx, этот контроллер кешируетimage, этот способ добавления случайного значения в URL не работает.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 07 декабря 2011

Ваш браузер кэширует изображение, которое вам нужно, чтобы разбить кеш, добавив к нему случайную строку:

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

Вы можете использовать что-то вроде JS math fn: Math.random()

2 голосов
/ 07 декабря 2011

Попробуйте добавить метку времени в конец URL.Поместите var theTime в вашу функцию и добавьте ? и theTime к вашему URL.

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

var hUrl = "myHandler.ashx?"+theTime;
0 голосов
/ 07 декабря 2011

Добавить метку времени к источнику изображения:

...

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));

...

...