Je charge mon formulaire de contact sur ma page avec JQuery/AJAX.
Le formulaire de contact contient les scripts reCaptcha.
Malheureusement, JQuery supprime les balises de script avant de les insérer dans ma page. Ces balises de script sont nécessaires car elles génèrent le captcha. maintenant mon formulaire chargé n'a pas de captcha.
Le lien contient tout ce dont vous avez besoin: http://code.google.com/apis/recaptcha/docs/display.html
Vous ne pouvez pas ajouter le script en ajax. Vous devriez ajouter la ligne suivante avant:
<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
Ensuite, vous pouvez créer dynamiquement un formulaire recaptcha dans votre code js en ajoutant le code suivant:
Recaptcha.create("your_public_key",
"element_id",
{
theme: "red",
callback: Recaptcha.focus_response_field
}
);
@benck, bonne réponse! Mais c'est devenu un peu démodé. L'URL du script actuel est:
<script type="text/javascript" src="https://www.google.com/recaptcha/api.js"></script>
Et le code devrait être comme ci-dessous:
grecaptcha.render('element_id', {
sitekey: recaptchaSiteKey,
callback: function(response) {
console.log(response);
}
});
Mon approche est un peu différente:
<script src='https://www.google.com/recaptcha/api.js?render=explicit' async defer></script>
<form>
<input name="whatEver" type="text">
<div id="captcha"></div>
<button>submit</button>
</form>
<script>
var captchaWidgetId = grecaptcha.render( 'captcha', {
'sitekey' : 'your_site_key'
'theme' : 'light'
});
$(document).ready(function(){
$('form').on('click','button', function(e){
var formDatas = $(this).closest('form').serialize()+'&response='+grecaptcha.getResponse(captcha);
$.post('post.php', formDatas, function(data){
//successful
});
});
});
</script>