Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获引用错误:未定义Recaptcha_Javascript_Jquery_Html_Ajax_Recaptcha - Fatal编程技术网

Javascript 未捕获引用错误:未定义Recaptcha

Javascript 未捕获引用错误:未定义Recaptcha,javascript,jquery,html,ajax,recaptcha,Javascript,Jquery,Html,Ajax,Recaptcha,我在联系人表单上实现reCaptcha控件时遇到问题 加载时引发以下错误:未捕获引用错误:未定义Recaptcha 下面是我正在使用的部分代码片段: <form role="form" id="ContactMessageForm"> <div class="form-group"> <div id="CaptchaContainer"></div> </div> <button type=

我在联系人表单上实现reCaptcha控件时遇到问题

加载时引发以下错误:未捕获引用错误:未定义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>

发送
$(文档).ready(函数(){
/*初始化reCaptcha控件*/
Recaptcha.destroy();
重述创建('6Lc4V_asaaaamnnwucatewh1mlodylmgayxb_m6','captchacainer'{
主题:"清洁",,
回调:Recaptcha.focus\u response\u字段
});
});
我的代码很可能有输入错误,但我就是看不到


您可以看到触发实际错误的原因:

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


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

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


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

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

Recaptcha.create('<public_key>', 'CaptchaContainer', {
        theme: 'clean',
        callback: Recaptcha.focus_response_field
});
<script type="text/javascript">
    $.getScript( "http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function() {
        Recaptcha.create("<PUBLIC_KEY>", "recaptchadiv", {theme: "clean"});
    });
</script>
Recaptcha.create(“”,'captchacainer'{
主题:"清洁",,
回调:Recaptcha.focus\u response\u字段
});

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

Recaptcha.create('<public_key>', 'CaptchaContainer', {
        theme: 'clean',
        callback: Recaptcha.focus_response_field
});
<script type="text/javascript">
    $.getScript( "http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function() {
        Recaptcha.create("<PUBLIC_KEY>", "recaptchadiv", {theme: "clean"});
    });
</script>
Recaptcha.create(“”,'captchacainer'{
主题:"清洁",,
回调:Recaptcha.focus\u response\u字段
});

我也有同样的问题,我用以下方法解决了它

Recaptcha.create('<public_key>', 'CaptchaContainer', {
        theme: 'clean',
        callback: Recaptcha.focus_response_field
});
<script type="text/javascript">
    $.getScript( "http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function() {
        Recaptcha.create("<PUBLIC_KEY>", "recaptchadiv", {theme: "clean"});
    });
</script>

$.getScript(“http://www.google.com/recaptcha/api/js/recaptcha_ajax.js“,函数(){
create(“,”recaptchadiv“,{theme:“clean”});
});

我也有同样的问题,我用以下方法解决了它

Recaptcha.create('<public_key>', 'CaptchaContainer', {
        theme: 'clean',
        callback: Recaptcha.focus_response_field
});
<script type="text/javascript">
    $.getScript( "http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function() {
        Recaptcha.create("<PUBLIC_KEY>", "recaptchadiv", {theme: "clean"});
    });
</script>

$.getScript(“http://www.google.com/recaptcha/api/js/recaptcha_ajax.js“,函数(){
create(“,”recaptchadiv“,{theme:“clean”});
});

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

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


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

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

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


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

似乎是HTML代码加载(表单+脚本)和执行$(document).ready()之间的时间问题,这是在recaptcha加载事件之前。@progysm:我不确定是否执行了。由于Recaptcha.create调用位于$(document).ready()中,因此在表单和脚本加载完成之前,它不应该启动。您已经在render.js/renderContent()中的$(document).ready()中加载了“contact”内容,因此任何其他document.ready()都将立即启动。哇,学到了一些新东西。那么,你认为最好的处理方法是什么呢。我应该用setTimeout来包装它并检查是否定义了Recaptcha吗?如果您等待的时间足够长并且google端没有问题,setTimeout有时可能会起作用。。。我不确定什么是最好的选择。也许我会在render中添加一个补丁来检查location.hash中的'contact',然后添加带有document.createElement('script')的google recaptcha脚本,并检查.onload事件以开始使用recaptcha对象。这似乎是HTML代码加载(表单+脚本)和$(document.ready()执行之间的时间问题在recaptcha load事件之前。@progysm:我不确定是否遵循。由于Recaptcha.create调用位于$(document).ready()中,因此在表单和脚本加载完成之前,它不应该启动。您已经在render.js/renderContent()中的$(document).ready()中加载了“contact”内容,因此任何其他document.ready()都将立即启动。哇,学到了一些新东西。那么,你认为最好的处理方法是什么呢。我应该用setTimeout来包装它并检查是否定义了Recaptcha吗?如果您等待的时间足够长并且google端没有问题,setTimeout有时可能会起作用。。。我不确定什么是最好的选择。也许我会在render中添加一个补丁来检查location.hash中的'contact',然后添加带有document.createElement('script')的google recaptcha脚本并检查.onload事件以开始使用Recaptcha对象。谢谢,它确实有效,但是使用Recaptcha的回调如何?谢谢,它确实有效,但是使用Recaptcha的回调如何?