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

时间:2015-11-09 16:59:30

标签: javascript jquery ajax recaptcha

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

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

重置recaptcha似乎工作正常,客户能够重新调整"我不是机器人"框然后继续,但在重新设置recaptcha之后,页面上的滚动操作会导致大量的TypeError:a recaptcha_en.js中的a 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);
        }
     }
}
});

1 个答案:

答案 0 :(得分:0)

有同样的问题,我发现有用的一切是recapthca试图加载旧版本或其他东西(我无法重现,但在某些情况下我得到了另一个版本的验证码)...和另一个相关的想法模态窗口我的recaptcha显示相同的行为。

BTW:不仅滚动事件触发器错误垃圾邮件,而且任何窗口也会重新调整大小。

我希望其中任何一个都能提供帮助。