J'ai eu un petit problème ici les gars. Je suis en train de mettre en œuvre le scénario suivant:
- Un utilisateur ouvre la page d'accueil et voit une liste d'autres utilisateurs et de clics ajouter un à sa liste d'amis.
- Je lance une requête Ajax à une ressource serveur pour valider si l'utilisateur est connecté, si c'est le cas, j'émets une autre requête ajax à une autre ressource serveur pour l'ajouter réellement à la liste d'amis de l'utilisateur.
Semble simple? Voici ce que j'ai fait: J'ai créé une fonction isLoggedIn
qui émettra la première requête au serveur afin de déterminer si l'utilisateur est connecté. J'émets cette requête en utilisant la méthode jQuery.ajax
. 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 à ce qui suit:
{ LoggedIn: true } or { LoggedIn : false }
maintenant cette méthode, fonctionne réellement et affiche correctement l'alerte: JsonData = true
si vous êtes connecté, . et JsonData = false
sinon connecté Jusqu'à présent il n'y a pas de problème, le problème se produit lorsque je tente d'appeler cette méthode: je l'appelle comme ceci:
$(".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 isLoggedIn
renvoie toujours false
et renvoie 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`!
Apparemment, cela fonctionne encore de manière asynchrone. Qu'est-ce qui me manque ici les gars?
t-il si vous spécifiez '{async:" false "}' vs '{async: false}'? –
@Cory Larson Non, peu importe, la méthode retourne false avant que la requête ajax ne soit complétée. – Galilyou