ReCAPTCHA找不到用户提供的功能:myCallBack

She*_*rma 21 jquery recaptcha

我正在尝试使用ReCAPTCHA,因为我遇到了以下错误.

ReCAPTCHA找不到用户提供的功能:myCallBack.

我该如何解决这个问题?

var verifyCallback3 = function(response) {
    if(response!=null){
        $("#rss").show();
    }
};

var myCallBack = function() {
    grecaptcha.render('html_element', {
        'sitekey' : '6sssfffffffffAAPfEI_RkbAlUuw5FA4p-kiGy5Nea',
        'callback' : verifyCallback3,
        'theme' : 'light',
        'type':'image'
    });
};
Run Code Online (Sandbox Code Playgroud)

Joh*_*ann 15

确保在全局范围内定义回调函数.出于某种原因,在生产中我的函数不在此命名空间中.

此外:

function myCallback() { ... }
Run Code Online (Sandbox Code Playgroud)

确保直接将其分配到全局空间:

window.myCallback = myCallback;
Run Code Online (Sandbox Code Playgroud)

你应该能够测试这是否是你的问题,我在Javascript控制台输入函数名称,看看它是否已定义.

  • es6类模块js文件中有什么方法可以做到这一点?在那里我所有的函数都没有关键字'function'定义,然后在诸如`this.myFunction`之类的构造函数中启动。目前,我只是在函数recaptchaCallback定义上方有window.recaptchaCallback = recaptchaCallback,而在我的export default class {}上方看起来却很丑陋。 (2认同)

Hus*_*bir 10

同样的事情发生在我身上。我仔细检查了我的代码,一切都很好,但没有显示验证码,控制台中的消息是“ReCAPTCHA 找不到用户提供的函数:myCallBack”但最后我发现我的 JavaScript 代码是在页面加载功能中。我只是从页面加载功能和它的工作中取出它。


小智 8

你必须把你的脚本函数:

<script> function registerFormCheck()</script>
Run Code Online (Sandbox Code Playgroud)

在谷歌脚本之前是这样的:

/* First */    <script> function registerFormCheck(){} </script>
/* Second */   <script src='https://www.google.com/recaptcha/api.js'></script>
Run Code Online (Sandbox Code Playgroud)

这对我有用...


Qas*_*sim 7

在您的recaptcha div中,请确保在数据回调中不要使用括号。

像这样data-callback="yourCallback",而不是data-callback="yourCallback();"

  • 如果我使用 es6 类模块,如何在全局范围内拥有此回调函数? (2认同)