La variable no se devuelve desde la función AJAX
A medida que mi marco crece, decidí dividirlo en archivos, en lugar de dejarlo en el archivo de diseño principal. Sin embargo, al hacer eso, el retorno de una función no devuelve ningún valor.
los datos no están vacíos; si alerto a los valores en el archivo js, ¡están ahí!
Las funciones:
Primero, la función en el archivo .js (se incluye antes de la ejecución)
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;
}
}
});
}
};
Entonces y aquí está la parte de ejecución:
var test = get_data(data, destination);
notice(test);
y la prueba está vacía... Ya probé diferentes formas de escribir, pero supongo que no entendí bien las posibilidades de js.
No puedes hacer eso: como la llamada es asincrónica, la función get_data no puede devolver el resultado de la llamada ajax.
Lo que debes hacer es proporcionar una devolución de llamada a la función get_data y manejar el resultado en la devolución de llamada.
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);
}
}
});
}
};
Y llámalo así:
get_data(data, destination, function(test){
notice(test);
});