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

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

重置Recaptcha似乎可以正常工作,并且客户可以重新勾选“我不是机器人”框并继续操作,但是,在重置Recaptcha并在页面上滚动操作后,会导致大量TypeError:a为recaptcha_en.js中的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);
        }
     }
}
});

最佳答案

有一个相同的问题,我发现值得考虑的所有事情是recapthca试图加载旧版本或某些东西(我无法复制,但在某些情况下我获得了另一个验证码版本)...以及与模态窗口有关的另一种想法,其中我的Recaptcha显示相同的行为。

顺便说一句:不仅滚动事件触发了垃圾邮件,而且还调整了窗口大小。

希望以上任何一项都能对您有所帮助。

10-02 16:15