函数必须为false时返回true

时间:2020-08-01 18:22:53

标签: javascript validation

我创建了一个验证表单的函数。如果有错误,则返回false,否则返回true。现在的情况是,ajax调用发生错误,并且那里的validationSuccess设置为false。我也在警报中看到了这一点。该函数最后奇怪地返回true。 Ajax调用中的值为false,但最后(最终)为true。我还发现引人注目的是,当我执行脚本时,首先显示“最终”警报,然后在ajax调用中显示该警报。有人知道哪里出了问题吗?

function validateForm() {
$('#login-error').empty();

var validationSuccess = true;

if (!validateEmail($('#email').val())) {
    $('#email').addClass('border-danger');
    $('#invalid-email').removeClass('d-none');
    validationSuccess = false;
}

if ($('#password').val().length < 8) {
    $('#password').addClass('border-danger');
    $('#invalid-password').removeClass('d-none');
    validationSuccess = false;
}

if (validationSuccess) {
    $.ajax({
        type: "POST",
        url: 'validate-login.php',
        dataType: "json",
        data: $('#login-form').serialize(),
        success: function(data) {
            if (Array.isArray(data) && data.length) {                   
                for (i = 0; i < data.length; i++) {
                    $('<div class="alert alert-danger" role="alert">' + data[i] + '</div>').appendTo('#login-error');
                }
                validationSuccess = false;
                alert('Ajax: ' + validationSuccess);
            }
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
    });
}
alert('Final: ' + validationSuccess);
return validationSuccess;

}

0 个答案:

没有答案