Javascript 未捕获引用错误:未定义Recaptcha
我在联系人表单上实现reCaptcha控件时遇到问题 加载时引发以下错误:未捕获引用错误:未定义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=
<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的回调如何?