Вы тоже пытались очистить кеш? (РЕДАКТИРОВАТЬ: да, вы сделали ...) Проблема появилась во всех браузерах? Я считаю, что ваш браузер кэширует старое изображение, потому что ваш прямой вызов, кажется, работает. Попробуйте cache: false
вместо 'cache' = false
Для меня это решение с использованием ajax-вызовов и Java Spring в бэкэнде сработало:
function generateCaptcha() {
$.ajaxSetup({
cache: false
});
var timestamp = (new Date()).getTime();
requestMappingCaptcha = "/generateCaptcha";
jQuery.get(requestMappingCaptcha, timestamp, function(data) {
$("#captchaImg").slideUp("fast");
if (!$.browser.msie || ($.browser.msie && $.browser.version == "9.0")) {
// animate reloadArrows
$("#reloadArrows").rotate({
angle:0,
animateTo:360
});
}
// setting new source
var newSrc = $("#captchaImg").attr("src").split("?");
newSrc = newSrc[0] + "?" + timestamp;
$("#captchaImg").attr("src", newSrc);
$("#captchaImg").slideDown("fast");
});
}
И HTML для этого:
<div class="container captcha">
<spring:url value="/captcha.jpeg" var="url"/>
<div class="step2_captcha">
<img id="captchaImg" src="${url}" alt="Generatin captcha..." width="180" height="42" border="0" name="captchaImg"/>
</div>
<span class="help captcha">
<img src="/r.png" onclick="generateCaptcha();" id="reloadArrows" title="Reload Captcha"/>
</span>
</div>
Что это делает !? При нажатии на значок будет вызвана функция generateCaptcha
. Сопоставление запросов вызвало функцию сервера (в моем случае java) и отображает новую капчу по тому же URL-адресу, что и старый. Важно отключить кэширование и отправить отметку времени с get
. После этого немного волшебства jQuery сделано, источник капчи будет изменен на образ-Url + метка времени.
Надеюсь, это сработает и для вас, php.