Реализация невидимого reCAPTCHA в наших динамически генерируемых формах.Наш механизм from получает список полей из базы данных и динамически заполняет DOM полями формы, отображает его и обрабатывает сообщение.Чтобы использовать Invisible reCAPTCHA:
Я загружаю API-код Google, когда моя страница завершает загрузку:
<script src="https://www.google.com/recaptcha/api.js?render=explicit" async defer></script>
Когда моя форма загружается из БД, я добавляю div recaptchaв мой список полей:
form.fields.push( { html: '<div id="g-recaptcha-div" class="g-recaptcha" data-sitekey="<my site key>" data-badge="inline" data-size="invisible"></div>',
type: 'html'
} );
Позже я добавляю форму в DOM (jQuery 'appendTo'), и сразу после этого я отображаю reCAPTCHA:
recaptcha_id = grecaptcha.render("g-recaptcha-div",
{
'data-callback': _settings.form.submit,
'sitekey' : <my site key>
}, true
);
и форма появляется с значком reCAPTCHA / защищенным значком.Глядя на инспектора DOM, я могу увидеть DIV recaptcha с текстовой областью g-recaptcha-response, но она невидима.Как и следовало ожидать.
Затем в моей функции отправки после выполнения некоторой проверки формы я выполняю recaptcha:
grecaptcha.execute(recaptcha_id);
В этот момент я ожидаю, что вызов всплывет.,Но это не так.Ну, это было один раз.И моя форма отправляется в мой PHP-бэкэнд, где есть параметр для g-recaptcha-response, но он пуст.Однажды, когда появился вызов, в g-recaptcha-response было значение.
Всегда ли вызов должен появляться при вызове функции execute?Если нет, то как мы должны обрабатывать пустое значение ответа?
спасибо, Энди