Страница формы с повторной загрузкой Recaptcha после успешного вызова Ajax api - PullRequest
0 голосов
/ 31 августа 2018

У меня есть форма с 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);
}

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...