web-dev-qa-db-fra.com

ReCAPTCHA n'a pas pu trouver la fonction fournie par l'utilisateur: myCallBack

J'essaie d'utiliser ReCAPTCHA où je reçois une erreur suivante.

ReCAPTCHA n'a pas pu trouver la fonction fournie par l'utilisateur: myCallBack.

Comment puis-je résoudre ce problème?

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'
    });
};
21
Sheetal Sharma

Assurez-vous que votre fonction de rappel est définie dans la portée globale. Pour une raison quelconque, en production ma fonction n'était pas dans cet espace de noms.

En plus de:

function myCallback() { ... }

Assurez-vous de l'affecter directement dans l'espace global:

window.myCallback = myCallback;

Vous devriez pouvoir vérifier si c'est votre problème, en tapant le nom de la fonction sur la console Javascript et en vérifiant s'il est défini ou non.

14
John Lehmann

Dans votre division recaptcha, veillez à ne pas utiliser de parenthèse dans votre rappel de données.

Comme si data-callback="yourCallback", Plutôt que data-callback="yourCallback();"

7
Qasim

La même chose se passe avec moi. J'ai vérifié mon code avec soin, tout va bien, mais captcha n'est pas affiché et dans la console, le message est "ReCAPTCHA n'a pas pu trouver la fonction fournie par l'utilisateur: myCallBack" mais j'ai finalement trouvé que mon code JavaScript était est dans la fonction de chargement de page. Je viens de le sortir de la fonction de chargement de page et de son fonctionnement.

4
husnain shabbir

Vous devez mettre votre fonction de script:

<script> function registerFormCheck()</script>

Avant le script google quelque chose comme ça:

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

Cela a fonctionné pour moi ...