2014-02-11 5 views
0

Я использую jquery php captcha в magento.Captcha генерируется отлично, но я также хочу обновить его, но не получить, как это сделать. Вот мой код, который я использовал.Перезагрузка Captcha не работает в jquery PHP

HTML код

<span id="reload_captcha_span"><img id="captcha_image" src="<?php echo $this->getUrl('helloworld/index/captcha'); ?>"/></span> 
<span id="reload_captcha">reload</span> 

JQuery код

jQuery('#reload_captcha').click(function(){ 
       jQuery.ajax({ 
         url: '<?php echo $this->getUrl('helloworld/index/captcha'); ?>', 
         success:function(data){ 
          jQuery('#reload_captcha_span').html(""); 
          jQuery('#reload_captcha_span').html(data); 
         } 
        }); 
      }); 

PHP код

session_start(); 
     $ranStr = md5(microtime()); 
     $ranStr = substr($ranStr, 0, 6); 
     $_SESSION['cap_code'] = $ranStr; 
     $newImage = imagecreatefromjpeg("cap_bg.jpg"); 
     $txtColor = imagecolorallocate($newImage, 0, 0, 0); 
     imagestring($newImage, 5, 5, 5, $ranStr, $txtColor); 
     header("Content-type: image/jpeg"); 
     imagejpeg($newImage); 

В ответ я получаю неизвестные данные могут быть, что это само изображение.

Пожалуйста, помогите мне.

Заранее благодарен!

ответ

1

Попробуйте это:

jQuery('#reload_captcha').click(function(){ 
    var d = new Date(); 
    jQuery('#captcha_image').attr('src', '<?=$this->getUrl('helloworld/index/captcha')?>?'+d.getTime()); 
}); 

Чтобы получать один и тот же адрес изображения, но мы добавляем случайный параметр (время), так что это не извлекается из кэша.

+0

Да, это сработало. Огромное спасибо. Пожалуйста, дайте мне знать, как вы знали, что это проблема кеша. Как я тоже пробовал, за исключением добавления времени – user3110655

+1

Браузеры будут (почти) всегда использовать кешированные ресурсы при вызове того же URL-адреса (зависит от заголовков). Это древний метод, чтобы добавить параметр GET, чтобы избежать этого;) –

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