Google reCaptcha 2 TypeError:a在调用grecaptcha.reset后为null

Google reCaptcha 2 TypeError: a is null after calling grecaptcha.reset

本文关键字:grecaptcha 调用 reset 后为 null reCaptcha TypeError Google      更新时间:2023-09-26

我有一个基于AJAX的注册页面,可以在客户端和服务器上进行验证。

当服务器端验证失败时,AJAX会将错误返回到屏幕,并尝试使用grecaptcha.reset().重置repatcha

重置repatcha似乎效果良好,客户可以勾选"我不是机器人"框并继续操作,但在重置repatch后,页面上的滚动操作会导致大量TypeError:a在repatcha_en.js中为null javascript错误。

TypeError: a is null
https://www.gstatic.com/recaptcha/api2/r20151104115408/recaptcha__en.js
Line 50

代码(简化):

var recaptcha1;
var onRecaptchaLoad = function () {
    recaptcha1 = grecaptcha.render('gRecaptcha', {
        'sitekey': 'my site key',
        'callback': CaptchaResponse
    });
};
$.ajax({
type: "POST",
url: "SaveDetails",
contentType: "application/json; charset=utf-8", 
dataType: "json",
data: data,
cache: false,
success: function (result) {
    if (result != null) {
        if (result.d.Success) {
            //success
        }else{             
            grecaptcha.reset(recaptcha1);
        }
     }
}
});

有同样的问题,我发现所有有用的思考都是repathca试图加载旧版本或其他什么(我无法复制,但在某些情况下我得到了另一个版本的captcha)。。。另一个想法与模态窗口有关,我的重述显示了相同的行为。

BTW:不仅滚动事件触发错误垃圾邮件,还可以重新调整窗口大小。

我希望这些都能有所帮助。