未捕获的ReferenceError:未定义Recaptcha

时间:2014-03-20 17:23:24

标签: javascript jquery html ajax recaptcha

我遇到了在联系表单上实现reCaptcha控件的问题。

加载时抛出以下错误:未捕获的ReferenceError:未定义Recaptcha

以下是我正在使用的代码的部分片段:

<form role="form" id="ContactMessageForm">
    <div class="form-group">
        <div id="CaptchaContainer"></div>
    </div>
    <button type="button" class="btn btn-default" id="ContactMessageSendButton">Send</button>
</form>

<script type="text/javascript" src="/scripts/mail.min.js" defer="defer"></script>
<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script type="text/javascript">
    $(document).ready(function () { 
        /* Initialize reCaptcha Control */
        Recaptcha.destroy();
        Recaptcha.create('6Lc4V_ASAAAAAMnnwUcaTewH1mlOdylMgAyxb_m6', 'CaptchaContainer', {
            theme: 'clean',
            callback: Recaptcha.focus_response_field
        });
    });
</script>

我的代码中很可能有拼写错误,但我只是没有看到它。

您可以在http://eat-sleep-code.com/#!/contact

看到实际错误

4 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我用以下

修复了它
<script type="text/javascript">
    $.getScript( "http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function() {
        Recaptcha.create("<PUBLIC_KEY>", "recaptchadiv", {theme: "clean"});
    });
</script>

答案 1 :(得分:1)

几年后,我为我的一个客户解决了这个问题。不过,问题略有不同。我打开了 ReCaptcha V2(谷歌)。它不起作用,但只在表单下方显示验证码*。

在控制台中它说它找不到 jquery。我发现 js 加载的顺序有问题,但我找不到答案。

对我来说,解决方案是转到模板并关闭“优化 js”。在那之后它开始工作了。希望这会为其他人节省几个小时:)

答案 2 :(得分:0)

使用@progysm的反馈我将调用移到了recaptcha_ajax.js,以便在调用renderContent()函数之前加载它。这样就可以显示验证码了。

不幸的是,我最终不得不放弃此应用程序的reCaptcha控件,因为验证方法因跨站点脚本方法而被阻止。

答案 3 :(得分:0)

请确认您是否使用了正确的公钥而不是私钥,如下所示

Recaptcha.create('<public_key>', 'CaptchaContainer', {
        theme: 'clean',
        callback: Recaptcha.focus_response_field
});