我有一个带有Google Recaptcha的表格,该表格已通过客户端和服务器端的验证,没有任何问题。我正在使用jquery对我的api进行AJAX post调用,以验证服务器端的验证码,并且它返回成功或失败的响应。如果响应失败,我将阻止提交表单;如果响应失败,我将阻止表单继续提交。现在的问题是,表单正在重新加载,但没有提交。我在下面提到了我的代码。我做了很多搜索,尝试了所有方法,但都没有成功。有人可以帮我吗?
<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);
}
谢谢