La variabile non viene restituita dalla funzione AJAX

Man mano che il mio framework cresce, ho deciso di dividerlo in file, invece di lasciarlo nel file di progettazione principale. Tuttavia, facendo ciò, il ritorno di una funzione non restituisce alcun valore.

i dati non sono vuoti – se avviso i valori nel file js ci sono!

Le funzioni:

1a funzione nel file .js (è inclusa prima dell’esecuzione)

var lock_get = 0; function get_data(data, destination) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data) { return data; } } }); } }; 

Quindi e qui è la parte di esecuzione:

  var test = get_data(data, destination); notice(test); 

e il test è vuoto … Ho già provato diversi modi di scrivere ma suppongo di aver capito le possibilità di js?

Non è ansible farlo: poiché la chiamata è asincrona, la funzione get_data non può restituire il risultato della chiamata ajax.

Quello che dovresti fare è fornire un callback alla funzione get_data e gestire il risultato nel callback.

 function get_data(data, destination, callback) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data && callback) { callback(data); } } }); } }; 

E chiamalo così:

 get_data(data, destination, function(test){ notice(test); }); 

In alternativa puoi tornare dalla chiamata sincrona AJAX, è generalmente un’idea BAD usare le chiamate sincrone, ma a volte può essere utile:

http://pratyush-chandra.blogspot.com/2012/04/store-ajax-json-response-into.html