谷歌验证码2报错:在调用grecaptcha.reset后,TypeError: a为空。

8
我有一个基于AJAX的注册页面,它在客户端和服务器端都进行验证。
当服务器端验证失败时,AJAX会返回错误到屏幕,并尝试使用grecaptcha.reset()重置recaptcha。
重置recaptcha似乎很好地工作了,客户能够重新打勾"I'm not a robot"并继续操作,然而在recaptcha被重置后,页面上的滚动操作导致大量的TypeError: a is null javascript错误在recaptcha_en.js文件中。
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);
        }
     }
}
});

你最终解决了这个问题吗? - Sean Kendle
1
这在当前版本的reCaptcha中仍然会发生。 - Mateus Felipe
1个回答

1
我有同样的问题,我发现recaptcha正在尝试加载旧版本或类似的东西(我无法重现,但在某些情况下我得到了另一个验证码版本)......还有一个与模态窗口相关的想法,我的recaptcha显示相同的行为。
顺便说一句:不仅滚动事件会触发错误垃圾邮件,任何窗口调整大小也会如此。
希望这些内容中的任何一个能够帮助。

2
你还在寻找答案吗?你有发现什么吗? - Sean Kendle
1
这在当前版本的reCaptcha中仍然会发生。 - Mateus Felipe
4
我也遇到了同样的问题,即使使用新的隐藏式reCAPTCHA仍然存在。 - Yann39

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接