2010-01-04 4 views

ответ

58

Вы можете принудительно обновить путем добавления случайной строки в конце, тем самым изменяя URL:

$('#verifyimage').click(function() { 
    $(this).attr('src', $(this).attr('src')+'?'+Math.random()); 
}); 
+2

EW. Нет, не надо. Вместо этого настройте соответствующие заголовки ответов кэширования на сервере. –

+1

'Cache-control',' Expires' и др. работает только после получения HTTP-запроса, - это просто заставить клиента выполнить этот запрос. В отсутствие «Image.reload» (AFAIK) это был самый простой способ сделать новый запрос –

+6

, если бы подстрока атрибута src была «?» так что после первого раза он не добавляет больше данных о querystring ... – Tracker1

9

Добавить метку или случайное число:

var timestamp = new Date().getTime(); 
$(this).attr('src',$(this).attr('src') + '?' +timestamp); 
+2

Временная метка - лучшее решение! Вы не можете полагаться на случайные, чтобы иногда быть одинаковыми. – jerwood

+0

попробовал это, но проблема в хроме. Изображение src добавляется с отметкой времени, но миниатюра не обновляется. Можете ли вы предложить мне что-нибудь по этому поводу? –

+0

@RohanPatil - здесь есть очевидная проблема: вы хотите ** добавить или обновить ** параметр ** запроса ** - этот код является лишь частичным решением - он предполагает, что для начала нет параметров запроса (Кроме того, , Я подозреваю, что он работает только один раз). – Kobi

0

В test.php наборе заголовки Content-Type: по image/jpeg

6

Принимая KPrimes отличный ответ и добавляя предложение трекеров, это то, что я придумал:

jQuery(function($) { 
    // we have both a image and a refresh image, used for captcha 
    $('#refresh,#captcha_img').click(function() { 
     src = $('#captcha_img').attr('src'); 
    // check for existing ? and remove if found 
     queryPos = src.indexOf('?'); 
     if(queryPos != -1) { 
      src = src.substring(0, queryPos); 
     }  
     $('#captcha_img').attr('src', src + '?' + Math.random()); 
     return false; 
    }); 
}); 
Смежные вопросы