У меня есть форма с Google recaptcha, которая проверяется со стороны клиента и сервера без каких-либо проблем. Я делаю пост-вызов AJAX для моего API, используя jquery для проверки капчи на стороне сервера, и он возвращает ответ либо успешно, либо неудачно. При неудачном ответе я запрещаю отправку формы, а при успешном ответе разрешаю отправку и отправку формы. Теперь проблема в том, что формы перезагружаются, а не отправляются. Я упомянул мой код ниже. Я много искал и перепробовал все, но безуспешно. Может ли кто-нибудь помочь мне в этом?
<script type="text/javascript">
$(document).ready(function () {
$(".sfFormSubmit input[type='submit']").attr("disabled", true);
var captchaForm = $('.g-recaptcha').parents('form').first();
captchaForm.submit(function (e) {
var response = grecaptcha.getResponse();
if (response.length == 0) {
e.preventDefault();
grecaptcha.reset();
return false;
}
else {
e.preventDefault();
var self = this;
$.ajax(
{
url: "/api/Captcha/Validate/",
type: "POST",
dataType: 'json',
data: "=" + response
//processData: false
}).done(function (result) {
var captchaResponse = jQuery.parseJSON(result);
if (captchaResponse.success) {
self.submit();
//return true;
} else {
var error = captchaResponse["error-codes"][0];
$('#errStatus').html("RECaptcha error- " + error);
$('#errStatus').show();
//return false;
}
}).fail(function (xhr, status) {
var err = "Error " + " " + status;
if (xhr.responseText && xhr.responseText[0] == "{")
err = JSON.parse(xhr.responseText).message;
console.log(err);
$('#errStatus').html("RECaptcha api error- " + error);
$('#errStatus').show();
//return false;
});
}
});
});
function onReturnCallback() {
$(".sfFormSubmit input[type='submit']").attr("disabled", false);
}
Спасибо