Tengo una función de javascript que solicita algunos datos ajax y recupera un objeto JSON. Entonces debería devolver el objeto.Jquery: esperar la devolución de llamada antes de devolver
El problema es que no sé cómo hacer que la función vuelva de la devolución de llamada Ajax. Por supuesto
myFunction: function() {
$.get(myUrl, function(data) {
return data;
});
}
no funciona, porque la función interna está regresando en lugar de la externa.
Por otro lado, la ejecución de lo que necesito dentro de la devolución de llamada romperá mi subdivisión MVC: este código está en un modelo, y me gustaría utilizar el objeto resultante en el controlador.
Una solución temporal es
myFunction: function() {
var result = $.ajax({
url: myUrl,
async: true,
dataType: 'text'
}).responseText;
return eval(result);
}
que tiene la desventaja de bloquear el navegador a la espera de la respuesta (y el uso de eval, que prefiero evitar).
¿Hay alguna otra solución?
Esto se ha preguntado muchas, muchas veces ... Ver por ejemplo: http://stackoverflow.com/questions/31129/how-can-i-return-a-variable-from-a-getjson-function – Shog9