У меня тут небольшая проблема, ребята. Я пытаюсь реализовать следующий сценарий:
- Пользователь открывает домашнюю страницу и видит список других пользователей и щелкает
чтобы добавить его в список друзей.
- Я отправляю 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`!
Видимо, он все еще работает асинхронно. Что мне здесь не хватает, ребята?