Tengo un pequeño problema aquí chicos. Estoy tratando de poner en práctica el siguiente escenario:
- un usuario abre la página principal y ve una lista de otros usuarios y clics para agregar uno a su lista de amigos.
- Emite una solicitud de Ajax a un recurso de servidor para validar si el usuario está conectado, si es así, emite otra solicitud ajax a otro servidor recurso para realmente agregarlo a la lista de amigos del usuario.
Sonidos simples? Esto es lo que hice: Creé una función isLoggedIn
que emitirá la primera solicitud al servidor para determinar si el usuario está conectado. Emití esta solicitud usando el método jQuery.ajax
. Aquí está mi función será similar a:
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;
}
});
}
El regresó JSON es muy simple, se tiene el siguiente aspecto:
{ LoggedIn: true } or { LoggedIn : false }
Ahora este método, realmente funciona y muestra la alerta correcta: JsonData = true
si iniciada la sesión, . JsonData = false
y si no se registra en hasta este punto no hay problema, el problema se produce cuando trato de llamar a este método: la llamo así:
$(".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;
});
Llamar a isLoggedIn
siempre devuelve false
, y devuelve 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`!
Aparentemente, sigue funcionando de forma asíncrona. ¿Qué me estoy perdiendo aquí chicos?
qué importa si se especifica '{asíncrono:" falso "}' contra '{async: falso}'? –
@Cory Larson No, no importa, el asunto es que el método devuelve falso antes de que la solicitud de ajax se complete. – Galilyou