sincrono peticiones net mvc false example desde async asp asp.net-mvc ajax jquery

asp.net mvc - peticiones - La solicitud $.ajax({async: false}) aún se activa de forma asíncrona.



jquery ajax mvc controller (1)

Necesita async:false , no async:"false" . (es decir, pase booleano false , no cadena "false" ).

Editar: también con las solicitudes de sincronización, debe devolver un valor después de la llamada a ajax , no dentro de su controlador de éxito:

function isLoggedIn() { var isLoggedIn; $.ajax({ async: false, // ... success: function(jsonData) { isLoggedIn = jsonData.LoggedIn } }); return isLoggedIn }

Tengo un pequeño problema aquí chicos. Estoy tratando de implementar el siguiente escenario:

  1. Un usuario abre la página de inicio y ve una lista de otros usuarios y clics para agregar uno a su lista de amigos.
  2. Emití una solicitud de Ajax a un recurso del servidor para validar si el usuario está conectado, de ser así, publico otra solicitud ajax a otro recurso del servidor para que realmente lo agregue a la lista de amigos del usuario.

Suena simple? Esto es lo que hice: isLoggedIn una función isLoggedIn que emitirá la primera solicitud al servidor para determinar si el usuario está conectado. jQuery.ajax esta solicitud usando el método jQuery.ajax . Aquí está mi función se ve así:

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 JSON devuelto es muy simple, se ve así:

{ LoggedIn: true } or { LoggedIn : false }

Ahora, este método funciona y muestra la alerta correctamente: JsonData = true si está conectado, y JsonData = false si no está conectado. Hasta este momento no hay problema, el problema ocurre cuando intento llamar a este método: lo llamo al igual que:

$(".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: falso`!

Aparentemente, todavía está trabajando de forma asíncrona. ¿Qué me estoy perdiendo aquí chicos?