【发布时间】:2019-06-20 19:27:43
【问题描述】:
我想将 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 文件。
【问题讨论】:
-
1.为验证码创建创建一个新的单独函数。 2.提交前执行。 3. 检查是否 $('#token').val();不为空,则提交
标签: javascript php jquery ajax recaptcha