У меня есть утверждение if:
if(authenticate_session("secret_password12345")){
alert("You are authenticated");
}else{
alert("Intruder alert!");
}
и функция аутентификации javascript, которая делает JQuery POST AJAX-запрос к серверу для выполнения фактической аутентификации и возвращает true или false:
function authenticate_session(session_id){
$.post("/auth.php",
{ action: "authenticate_session", login_id: session_id },
function(data){
if(data == "denied"){
alert("denied");
return false;
}else if(data == "accepted"){
alert("accepted");
return true;
}
},
"text");
}
Однако, когда оператор if вызывает функцию аутентификации, он не ожидает завершения AJAX и всегда выполняет «else». Если я добавлю «вернуть истину»; в первой строке функции аутентификации, перед ajax, оператор if работает так, как ожидается => alert («You are authenticated»).
Я знаю, что серверная часть работает правильно, так как оповещение («отказано») и оповещение («принято») вызываются, как и ожидалось (но интересно, после оповещений оператора if).
Как заставить мой оператор if ждать, пока не завершится функция аутентификации?
Спасибо!