我遇到了在联系表单上实现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>
我的代码中很可能有拼写错误,但我只是没有看到它。
看到实际错误答案 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
});