我在本教程中实现了reCAPTCHA,
https://codeforgeek.com/2014/12/google-recaptcha-tutorial/
首次提交效果很好。我遇到的问题是:
我发送验证码与其他表单数据,例如用户名,电子邮件等....所以如果验证码是正确的但其他不是,用户将再次发送它,但第二次它返回“{”成功“:false}”
如果我将它闲置约2分钟,它将会话到期,如果我选择该框,它会弹出警告并发出警告,例如“无法刷新:无效参数”,我无法再次选择该框
如何解决这些问题?非常感谢。
答案 0 :(得分:15)
Google reCAPTCHA提供了这两个功能:我总是在我的所有ajax驱动的表单中使用它。
grecaptcha.getResponse()
grecaptcha.reset();
对于您的两个问题,只要您需要在java脚本代码中使用第二个函数。
如果您的页面中只有一个验证码,请记住此功能。如果您有两个以上的验证码使用他们的ID,如谷歌文档中所述
答案 1 :(得分:0)
那些在研究期间遇到同样问题并满足此主题的人; 如果在自动渲染验证码时遇到问题,请尝试显式渲染验证码。为此,请在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检查注册表单并获得响应。所以我在我的AJAX响应中添加了reset函数。
$('#frmRegistration').submit(function () {
$.ajax({
url: "_ajax/_ajaxRegistration.php",
type: "POST",
data: $('#frmRegistration').serialize(),
success: function (reply) {
$('#resultRegistration').html(reply);
grecaptcha.reset();
}
});
});