У меня тут небольшая проблема, ребята. Я пытаюсь реализовать следующий сценарий:
- Пользователь открывает домашнюю страницу и видит список других пользователей и кликов чтобы добавить его в список друзей.
- Я выдаю запрос Ajax ресурсу сервера, чтобы проверить, является ли пользователь вошел в систему, если да, я выдаю другой запрос ajax другому серверу ресурс, чтобы фактически добавить его в список друзей пользователя.
Звучит просто? Вот что я сделал: я создал функцию isLoggedIn
, которая выдаст первый запрос на сервер, чтобы определить, вошел ли пользователь в систему. Я выдаю этот запрос с помощью метода jQuery.ajax
. Здесь моя функция выглядит так:
function isLoggedIn() {
$.ajax({
async: "false",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "/isloggedin",
success: function(jsonData) {
alert("jsonData =" + jsonData.LoggedIn);
return jsonData.LoggedIn;
}
});
}
Возвращенный JSON очень прост, он выглядит следующим образом:
{ LoggedIn: true } or { LoggedIn : false }
Теперь этот метод работает и корректно отображает предупреждение: JsonData = true
, если он зарегистрирован, и JsonData = false
, если он не вошел в систему.
До этого момента нет проблем, проблема возникает, когда я пытаюсь вызвать этот метод: я называю это так:
$(".friend_set .img").click(function() {
debugger;
if (isLoggedIn()) {
alert("alredy logged in");
trackAsync();
popupNum = 6;
}
else {
alert("not logged in"); //always displays this message.
popupNum = 1;
}
//centering with css
centerPopup(popupNum);
//load popup
loadPopup(popupNum);
return false;
});
Вызов isLoggedIn
всегда возвращает false
, и он возвращает false before the ajax request finishes (because the message
jsonData = true is displayed after the message "not logged in". I made sure that the request is **NOT** Asynchronous by stating
async: false`!
По-видимому, он все еще работает асинхронно. Что мне здесь не хватает?