Variable wird von AJAX-Funktion nicht zurückgegeben
Beim Aufteilen eines Frameworks in mehrere Dateien kann es zu einem Problem kommen, bei dem eine Variable nicht zurückgegeben wird aus einer AJAX-Funktion. Während die Variable in der JS-Datei nicht leer ist, erscheint sie in der Hauptausführung leer.
Ursprüngliches Funktionsmuster:
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; } } }); } };
Ausführung:
var test = get_data(data, destination); notice(test);
Im ursprünglichen Ansatz versucht die Funktion get_data, das Ergebnis des AJAX-Aufrufs zurückzugeben, schlägt jedoch fehl aufgrund der asynchronen Natur von AJAX.
Lösung: Rückrufe verwenden
Um dieses Problem zu beheben, können Sie Rückrufe verwenden. Durch Übergabe einer Callback-Funktion an get_data kann das Ergebnis verarbeitet und zurückgegeben werden:
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); } } }); } };
Ausführung (mit Callback):
get_data(data, destination, function(test) { notice(test); });
Das obige ist der detaillierte Inhalt vonWarum gibt meine AJAX-Funktion keine Variable zurück und wie kann ich das Problem mithilfe von Rückrufen beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!