У меня есть форма, содержащая кнопку, которая будет запускать Google невидимую recaptcha. страница html, которую я использую, выглядит следующим образом:
<html>
<head>
<script src="https://www.google.com/recaptcha/api.js?onload=onLoadRecaptcha&render=explicit" async defer></script>
</head>
<body>
<form method="post" id="signup_form">
<input type="text" name="fullname" value=""/>
<div class="g-recaptcha"
id="formSignup-recaptcha"
data-sitekey="<?php echo $sitekey; ?>"
data-callback="onSubmitFormSignupUser"
data-size="invisible">
</div>
<button type="button" name="submitBtn" id="submitBtn">Submit</button>
</form>
</body>
</html>
, но когда я нажимаю #submitBtn
, мне нужно запустить процесс проверки, используя ajax, чтобы убедиться, что все необходимые поля заполнены правильно до вызова / выполнения Google Recaptcha. вот код javscript, который я использую:
var widgetId = '';
var onLoadRecaptcha = function() {
widgetId = grecaptcha.render('submitBtn', {
'sitekey': $('#formSignup-recaptcha').attr('data-sitekey'),
'callback': onSubmitFormSignupUser,
});
};
var onSubmitFormSignupUser = function() {
validateForm('#formSignupUser')
};
var doSubmitFormSignupUser = function(target) {
var postData = $(target);
$.ajax({
url: '/signup_user',
type: 'post',
data: postData,
dataType: 'json',
success: function(res) {
if (res.status) {
window.location.href = '/home/signup_success';
} else {
console.log(res.message);
}
},
error: function(err) {
console.log('error', err.responseText);
},
complete: function() {
grecaptcha.reset(widgetId);
}
});
});
var validateForm = function(target) {
var myData = $(target).serializeArray();
$.ajax({
url: '/is_validated',
type: 'post',
data: myData,
dataType: 'json',
async: false,
success: function(res) {
if (res.status) {
doSubmitFormSignupUser(target);
} else {
console.log('message', res.message);
}
},
error: function(err) {
console.log('error', err.responseText);
},
complete: function() {
grecaptcha.reset(widgetId);
}
});
}
$('body').on('click', '#submitBtn', function(e) {
e.preventDefault();
grecaptcha.execute(widgetId);
});
, а вот мой код php:
function is_validated()
{
$response = [
'status' => 0,
'message' => '',
];
echo json_encode($response);
}
function signup_user()
{
echo 'thank you for signing up';
}
почему-то этот код не работает .. всякий раз, когда я нажимаю #submitBtn
, Google Reaptcha автоматически появляется, предлагая пользователю выбрать все изображения с автобусом или лайки. Я не знаю, что не так с моим кодом .. кто-нибудь может помочь?