J'ai eu un petit problème ici les gars. Je suis en train de mettre en œuvre le scénario suivant:
1 - Un utilisateur ouvre la page d'accueil et voit une liste d'autres utilisateurs et clique sur ajouter un à sa liste d'amis.
2 - je émettre une requête Ajax vers un serveur de ressources afin de valider si l'utilisateur est connecté, si oui, je émettre une autre requête ajax vers un autre serveur de ressources pour ajouter de l'utilisateur de la liste d'amis.
Cela paraît simple? Voici ce que j'ai fait: j'ai créé une fonction "isLoggedIn" qui émet la première demande au serveur, afin de déterminer si l'utilisateur est connecté. Je délivre la présente demande à l'aide de jQuery.ajax méthode. Voici ma fonction ressemble à:
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;
}
});
}
Le retour JSON est très simple, il ressemble à la suivante:
{ LoggedIn: true } or { LoggedIn : false }
Maintenant, cette méthode fonctionne réellement et affiche l'alerte correctement: "JsonData = true" si connecté, et "JsonData=false" si pas connecté.
Jusqu'à ce point, il n'y a pas de problème, le problème survient lorsque j'essaie d'appeler cette méthode: je l'appelle comme ça:
$(".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;
});
L'appel de isLoggedIn renvoie toujours false, et elle retourne false avant de la requête ajax finitions (parce que le message "jsonData = true" est affiché après le message "pas connecté". J'ai fait en sorte que la demande n'est PAS Asynchrone en déclarant async: false
!
Apparemment, c'est encore à travailler de manière asynchrone, si. Ce qui me manque ici, les gars?