2014-02-18 3 views
-2

Я не знаю, почему, но моя функция перезагрузки изображения не работает на prod, но на dev это нормально. Адрес: http://www.gifolio.com/user/registerФункция JS для обновления изображения captcha

Нажмите на ссылку "Невозможно прочитать captcha? Нажмите здесь!"

Изображение остается неизменным ... Но на моем dev он обновляется отлично.

Любая идея?

+0

Изображение кэшируются. Сценарий 'generate_captcha' отключает кеширование? Попробуйте добавить к URL-адрес кеш-бустера. – Barmar

ответ

4

Добавить кэш-попойка в URL, чтобы предотвратить кэширование:

function reloadCaptcha() { 
    jQuery('#captcha_img').attr('src', '/user/generate_captcha?cb='+(new Date().getTime())); 
} 
+0

Технически проблема заключается не в кешировании, а в браузере, не распознающем изменение URL. – rvighne

+0

Он отлично работает! Благодаря ! – zeflex

0

При изменении src изображения браузер не получает новое изображение, потому что URL-адрес тот же. Чтобы исправить это, вам нужно убедиться, что URL-адрес уникален. В вашей функции установите измените строку на это:

jQuery('#captcha_img').attr('src', '/user/generate_captcha?' + Date.now()); 

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

+0

Почему бы просто не добавить дату до конца строки запроса? – cgatian

+0

Почему вы изменили название даты? – cgatian

+0

@cgatian Просто понял, что реальной проблемой является не кеш-кеш, а браузер не загружает изображение, потому что URL-адрес был тем же. – rvighne

Смежные вопросы