Tengo una función de JavaScript que llama a una función genérica para realizar una llamada ajax al servidor. Necesito recuperar un resultado (verdadero/falso) de la función de devolución de llamada de la llamada ajax, pero el resultado que obtengo siempre es 'indefinido'.Promover la devolución de llamada en el valor de retorno de éxito al valor de retorno de la función del llamador
Una versión super-simplificada de la función genérica sin toda mi lógica sería:
function CallServer(urlController) {
$.ajax({
type: "POST",
url: urlController,
async: false,
data: $("form").serialize(),
success:
function(result) {
if (someLogic)
return true;
else
return false;
},
error:
function(errorThrown) {
return false;
}
});
}
Y la función de llamada que sería algo así como:
function Next() {
var result = CallServer("/Signum/TrySave");
if (result == true) {
document.forms[0].submit();
}
}
La variable "resultado" es siempre 'indefinido', y al depurarlo, puedo ver que se está ejecutando la línea "return true" de la función de devolución de llamada.
¿Alguna idea de por qué esto está sucediendo? ¿Cómo puedo burbuja el valor de retorno de la función de devolución de llamada a la función CallServer?
Gracias
Aunque esto puede funcionar para usted, es un código impredecible, porque es probable que devuelva "returnValue" del CallServer antes de que el POST asincrónico establezca su valor. Regla general: no envuelva llamadas asincrónicas en envolturas síncronas. –
es posible que tenga en cuenta $ .cuando hay una forma de esperar en las llamadas asincrónicas http://api.jquery.com/jQuery.when/ – Andbdrew