Как сделать JQuery-AJAX-запрос синхронным

Как сделать синхронный запрос AJAX?

У меня есть форма, которую нужно отправить. Но его нужно отправлять только тогда, когда пользователь вводит правильный пароль.

Вот код формы:


И код JQuery для отправки и проверки пароля это:

var ajaxSubmit = function(formE1) {

    var password = $.trim($('#employee_password').val());

    $.ajax({
        type: "POST",
        async: "false",
        url: "checkpass.php",
        data: "password="+password,
        success: function(html) {
            var arr=$.parseJSON(html);
            if(arr == "Successful") {
                return true;
            } else {
                return false;
            }
        }
    });
}

Однако форма всегда отправляется независимо от значения, возвращаемого запросом ajax. Я проверил все остальное. Значение arr выходит "успешный» когда правильный пароль введен и работает правильно, наоборот.

Как сделать этот запрос синхронным? насколько я могу отладить, запрос является асинхронным, поэтому форма отправляется до того, как запрос будет завершен.

Код для checkpass.php

setbyid_employee(1);
$arr=$m->editdisplay_employee();

if($arr['employee_password'] == $employee_password)
{
$res="Successful";  
}
else
{
$res="Password not match";  
}

echo $res;
?>

Обновление: решение найдено.

Как указал Олаф Дитще: возвращаемое значениеajaxSubmit не является возвращаемым значением.success: function(){...}ajaxSubmit не возвращает значения вообще, что эквивалентноundefined, который в свою очередь оценивает.true

И это причина, почему форма всегда отправляется и не зависит от отправки запроса синхронно или нет.

Итак, я установил переменную на1 внутренняя успешность зависит от успешной. И проверил его значение из функции успеха, если это было1 за пределами функции успеха, то я написалreturn true ... else return false, И это сработало.

Обновлен рабочий код:

var ajaxsubmit=function(forme1) {
    var password = $.trim($('#employee_password').val());
    var test="0";

    $.ajax({
        type: "POST",
        url: "checkpass.php",
        async: false,
        data: "password="+password,
        success: function(html) {
            if(html == "Successful") {
                test="1";
            } else {
                alert("Password incorrect. Please enter correct password.");
                test="0";
            }
        }
    });

    if(test=="1") {
        return true;
    } else if(test=="0") {
        return false;
    }
}

Ответы на вопрос(6)

Ваш ответ на вопрос