Tengo una función del lado del servidor que requiere iniciar sesión. Si el usuario está conectado, la función devolverá 1 en caso de éxito. De lo contrario, la función devolverá la página de inicio de sesión.¿Cómo hago que jQuery espere a que finalice una llamada Ajax antes de que vuelva?
Quiero llamar a la función usando Ajax y jQuery. Lo que hago es enviar la solicitud con un enlace normal, con una función de clic aplicada. Si el usuario no está conectado o la función falla, quiero que la llamada Ajax se devuelva verdadera, para que se active el href.
Sin embargo, cuando uso el siguiente código, la función sale antes de que se realice la llamada Ajax.
¿Cómo puedo redirigir al usuario elegantemente a la página de inicio de sesión?
$(".my_link").click(
function(){
$.ajax({
url: $(this).attr('href'),
type: 'GET',
cache: false,
timeout: 30000,
error: function(){
return true;
},
success: function(msg){
if (parseFloat(msg)){
return false;
} else {
return true;
}
}
});
});
Puede ser un hilo viejo, pero como @kofifus señala establecer un sync to false es un mal diseño y "no se procesarán los tiempos de espera, etc.". Podría intentar esta solución simplificada: https: // stackoverflow.com/a/11576418/6937841 – Shan