Я хочу добавить reCaptcha V3 в форму.
Вот форма:
<form action="mail.php" method="POST">
<!-- This hidden input will contain the token -->
<input type="hidden" name="token" id="token" />
<input type="text" name="name" />
<input type="text" name="email" />
<textarea name="message"></textarea>
<input type="submit" name="submit" value="Send" />
</form>
Теперь я пытаюсь отправить значение token
на mail.php
, поэтому есть плагин под названием jquery.form
Я использую его для отправки запроса Ajax.
Вот код Javascript / Jquery:
$('form').ajaxForm({
beforeSubmit: function() {
//Captcha part
grecaptcha.ready(function() {
grecaptcha.execute('My_website_key', {action: 'form'}).then(function(token) {
//Set token value to the hidden element
$('#token').val(token);
});
});//reCaptcha ready
},//Before submit function
success: function(msg) {
if(msg == 'Message has been sent.'){
console.log('success!');
}else{
console.log(msg);
}
},//success function
complete: function(xhr) {
console.log(xhr.responseText);
}//complete function
});//End Ajax
Когда я отправляю форму, я смотрю на консоль и вижу, что token
пуст, и кажется, что функция success
выполняется, пока скрытый элемент token
не получил токен.
Я не могу добавить токен при загрузке страницы или любом другом действии, поскольку срок его действия истекает через 2 минуты, поэтому мне нужно получить токен и отправить его в файл PHP.