Ho una funzione javascript che richiede alcuni dati Ajax e recupera un oggetto JSON. Quindi dovrebbe restituire l'oggetto.Jquery: attendere la richiamata prima di restituire
Il problema è che non so come rendere la funzione restituita dal callback Ajax. Ovviamente
myFunction: function() {
$.get(myUrl, function(data) {
return data;
});
}
non funziona, perché la funzione interna sta ritornando anziché quella esterna.
D'altra parte l'esecuzione di ciò di cui ho bisogno appena all'interno del callback interromperà la suddivisione MVC: questo codice è in un modello e mi piacerebbe utilizzare l'oggetto risultato nel controller.
Una soluzione temporanea è
myFunction: function() {
var result = $.ajax({
url: myUrl,
async: true,
dataType: 'text'
}).responseText;
return eval(result);
}
, che ha lo svantaggio di bloccare il browser durante l'attesa per la risposta (e usando eval, che preferirei evitare).
Esistono altre soluzioni?
Questo è stato chiesto molte, molte volte ... Si veda ad esempio: http://stackoverflow.com/questions/31129/how-can-i-return-a-variable-from-a-getjson-function – Shog9