成功Ajax api调用后,带有Recaptcha的表单页面重新加载

时间:2018-08-31 06:26:28

标签: jquery ajax asp.net-mvc post

我有一个带有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);
}

谢谢

0 个答案:

没有答案