Google reCAPTCHA не работает второй раз
Я реализую reCAPTCHA в этом учебнике,
https://codeforgeek.com/2014/12/google-recaptcha-tutorial/
которые хорошо работают в первый раз. У меня проблемы:
-
Я отправляю captcha с другими данными формы, например. имя пользователя, адрес электронной почты и т.д.... так что если captcha правильный, но другой нет, пользователь отправит его снова, но во второй раз он вернется "{" success ": false}"
-
если я простаиваю в течение ~ 2 минут, это закончится, и если я выберу окно, появится всплывающее предупреждение и предупреждает что-то вроде "невозможно обновить: недопустимый параметр", и я не могу снова выбрать поле
Как исправить эту проблему? Большое спасибо.
Ответы
Ответ 1
Google reCAPTCHA предоставляет эти две функции: я всегда использую это во всех моих формах с поддержкой AJAX.
grecaptcha.getResponse()
grecaptcha.reset();
Для решения обеих ваших проблем используйте вторую функцию всякий раз, когда вам нужно в вашем коде JavaScript.
Помните, что это работает, если у вас есть только одна капча на вашей странице. Если у вас более двух CAPTCHA, используйте их идентификаторы, как описано в Документах Google.
https://developers.google.com/recaptcha/docs/display#js_api
Ответ 2
Те, у кого такая же проблема, и встречаются с этой темой во время исследования;
Если у вас возникла проблема при рендеринге автоматической конвертации, попробуйте сделать ее явно. Чтобы сделать это, добавьте следующий код внутри тега body.
<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaCallback&render=explicit&hl=tr" async defer></script>
-
var recaptchaCallback = function () {
// alert("grecaptcha is ready!");
grecaptcha.render("YOUR HTML DIV ID", {
'sitekey': 'YOUR SITE KEY',
});
};
-
Я использую AJAX, чтобы проверить регистрационную форму и получить ответ. Поэтому я добавил функцию reset в свой ответ AJAX.
$('#frmRegistration').submit(function () {
$.ajax({
url: "_ajax/_ajaxRegistration.php",
type: "POST",
data: $('#frmRegistration').serialize(),
success: function (reply) {
$('#resultRegistration').html(reply);
grecaptcha.reset();
}
});
});
Ссылка явная рендеринга reCaptcha Google.