Google reCAPTCHA第二次提交失败

时间:2015-06-23 06:06:54

标签: javascript php jquery google-chrome captcha

我在本教程中实现了reCAPTCHA,

https://codeforgeek.com/2014/12/google-recaptcha-tutorial/

首次提交效果很好。我遇到的问题是:

  1. 我发送验证码与其他表单数据,例如用户名,电子邮件等....所以如果验证码是正确的但其他不是,用户将再次发送它,但第二次它返回“{”成功“:false}”

  2. 如果我将它闲置约2分钟,它将会话到期,如果我选择该框,它会弹出警告并发出警告,例如“无法刷新:无效参数”,我无法再次选择该框

  3. 如何解决这些问题?非常感谢。

2 个答案:

答案 0 :(得分:15)

Google reCAPTCHA提供了这两个功能:我总是在我的所有ajax驱动的表单中使用它。

  

grecaptcha.getResponse()

     

grecaptcha.reset();

对于您的两个问题,只要您需要在java脚本代码中使用第二个函数。

  

如果您的页面中只有一个验证码,请记住此功能。如果您有两个以上的验证码使用他们的ID,如谷歌文档中所述

https://developers.google.com/recaptcha/docs/display#js_api

答案 1 :(得分:0)

那些在研究期间遇到同样问题并满足此主题的人; 如果在自动渲染验证码时遇到问题,请尝试显式渲染验证码。为此,请在body标签内添加以下代码。

<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaCallback&render=explicit&hl=tr" async defer></script>
  1.                         var recaptchaCallback = function () {
                               //  alert("grecaptcha is ready!");
                                grecaptcha.render("YOUR HTML DIV ID", {
                             'sitekey': 'YOUR SITE KEY', 
                                });
                            };
    
  2. 我正在使用AJAX检查注册表单并获得响应。所以我在我的AJAX响应中添加了reset函数。

    $('#frmRegistration').submit(function () { $.ajax({ url: "_ajax/_ajaxRegistration.php", type: "POST", data: $('#frmRegistration').serialize(), success: function (reply) { $('#resultRegistration').html(reply); grecaptcha.reset(); } }); });

  3. 参考Google reCaptcha explicit render