Вопрос

Я показываю Captcha таким образом:

<img src="ReturnCaptcha2.php" alt="CAPTCHA" width="100" height="50">

Рядом с ним у меня есть гиперссылка с именем "Перезагрузить".Я хочу отозвать этот PHP-файл, не обновляя свою страницу.Вероятно, в этом замешан AJAX.Пожалуйста, помогите.

Это было полезно?

Решение

Почему бы не использовать http://recaptcha.net/ и избавить себя от всего этого? Они просто будут обрабатывать капчу для вас.

Вот некоторая информация об интеграции на PHP и recaptcha: http://www.google.com/recaptcha/plugins/php

Как я уже упоминал, его совсем нетрудно интегрировать в ваше веб-приложение. Попробуйте!

Другие советы

Нет ли какого-либо параметра с отметкой времени или чего-то еще, чтобы запрос не кэшировался? Почему бы не заменить src чем-то вроде (используя jquery)

$("img#your-selector").attr("src","ReturnCaptcha2.php?_="+((new Date()).getTime()));
<a href="javascript:;" title="Reload Image" 
   onclick="document.getElementById('captcha').src = 'cimage.php?' + Math.random(); 
   return false">
   <img src="cimage.php" alt="Enter captcha" title="Enter captcha" id="captcha"/>
</a>

Вот код, который я использую с Secureimage PHP Captcha.

<form method="POST">
<input type="hidden" name="PHPSESSID" value="0b21dde61d891cd" />
<img id="siimage" src="securimage_show.php?sid=2ef186788e" alt="CAPTCHA Image" width="126" height="36" /><br />
<input type="text" name="code" /><br />
<a href="#" onclick="document.getElementById('siimage').src = 'securimage_show.php?' + Math.random(); return false">Reload Image</a>
<input type="submit" value="Submit Form" />
</form>

Может быть что-то вроде:

function reloadCaptcha()
{
img = document.getElementById('captcha');
img.src = 'ReturnCaptcha2.php';
}

А затем добавьте кнопку с onclick="reloadCaptcha();".

Я не проверял это, и я не JS гуру, поэтому не уверен, что это будет работать.

Еще один подход - использовать немного Ajax. на вашей кнопке обновления задайте действие как: OnClick = JavaScript: reloadCaptcha ();

в этой функции reloadCaptcha, позвоните на ваш captcha.php и обновите div, содержащий вашу капчу с возвращаемым значением. Вы можете легко вернуть HTML, а затем встроить его в div.

Вот еще один.

Создает глобальную переменную. Проверяет наличие.

function get_captcha(){
    //get original url refresh
    console.log('captcha requested.');
    if(typeof window.captcha_src === 'undefined'){
        window.captcha_src = document.getElementById('captcha').src;
    }
    document.getElementById('captcha').src = window.captcha_src + '&nocache=' + Math.random();
}

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

Enter Image Text <input name="captcha" type="text"> <img src="captcha.php" /><br> <a href="captcha.php">Reload Captcha</a><br/>

что ж, я решил эту проблему с помощью простого трюка;вместо того, чтобы вводить капчу в <img> поместите это в <iframe> и используйте javascript, чтобы перезагрузить его, когда вам потребуется

Javascript Для перезагрузки:

function reloadCaptcha()

{
document.getElementById('cap').src='captcha.php';
}

Фактический HTML:

<iframe id="cap" src="captcha.php"></iframe> <input type="button" value="reload" onclick="reloadCaptcha();"/>

это решает мою проблему, поправьте меня, если я где-то ошибаюсь

@мем: Я использую то же самое, но с jquery.Если вам нужно несколько заголовков на одной странице:

<img class="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image">
<a class="capcha-refresh" href="#" ><img src="/images/Refresh-icon.png"></a>

И функция js:

$('.capcha-refresh').click(function(a){
       $('.captcha').attr('src','/securimage/securimage_show.php?' + Math.random());
       a.preventDefault();
})
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top