Ich habe ein kleines Problem hier Jungs. Ich versuche, das folgende Szenario zu implementieren:
- Ein Benutzer öffnet die Homepage und sieht eine Liste von anderen Benutzern und klickt einen seiner Freundesliste hinzuzufügen.
- Ich eine Ajax-Anfrage an eine Server-Ressource zu überprüfen, ob der Benutzer angemeldet ist, wenn ja, ich eine andere Ajax-Anfrage an einen anderen Server Ressource, um es tatsächlich der Freundesliste des Benutzers hinzufügen.
Klingt einfach? Hier ist, was ich getan habe: Ich habe eine Funktion isLoggedIn
erstellt, die die erste Anfrage an den Server ausgibt, um festzustellen, ob der Benutzer angemeldet ist. Ich stelle diese Anfrage mit jQuery.ajax
Methode. Hier ist meine Funktion wie folgt aussieht:
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;
}
});
}
Der zurück JSON sehr einfach ist, sieht es wie folgt aus:
{ LoggedIn: true } or { LoggedIn : false }
Nun ist diese Methode tatsächlich funktioniert und zeigt die Warnung richtig: JsonData = true
wenn Sie angemeldet sind, . und JsonData = false
wenn nicht angemeldet bis zu diesem Punkt gibt es kein Problem ist, tritt das Problem auf, wenn ich versuche, diese Methode zu nennen: ich nenne es wie so:
$(".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;
});
Der Aufruf isLoggedIn
gibt immer false
zurück und gibt false before the ajax request finishes (because the message
zurück. JsonData = true is displayed after the message "not logged in". I made sure that the request is **NOT** Asynchronous by stating
async: false`!
Anscheinend funktioniert es immer noch asynchron. Was vermisse ich hier Jungs?
Spielt es eine Rolle, wenn Sie angeben '{async:" false "}' vs. '{async: false}'? –
@Cory Larson Nein, ist es egal, die Sache ist, die Methode gibt false zurück, bevor die Ajax-Anfrage sogar abgeschlossen ist. – Galilyou