Asynchrone AJAX-Aufrufe und Variablenrückgabe
Im Zusammenhang mit der Aufteilung Ihres Framework-Codes in separate Dateien ist ein Problem mit der Rückgabe aufgetreten Der Wert einer über AJAX aufgerufenen Funktion war nicht zugänglich. Diese Verwirrung rührt von der asynchronen Natur von AJAX-Aufrufen her.
AJAX-Aufrufe: Asynchronität erklärt
AJAX-Funktionen (Asynchronous JavaScript and XML) arbeiten asynchron. Das bedeutet, dass bei einer AJAX-Anfrage die Funktion, die die Anfrage stellt, nicht auf den Abschluss der Antwort wartet, bevor sie mit der Ausführung fortfährt. Dadurch können andere Teile des Programms parallel weiterlaufen, während die AJAX-Anfrage ausgeführt wird.
Funktionsrückgabe und AJAX
Im Fall Ihrer get_data-Funktion: Die Return-Anweisung innerhalb der Success-Callback-Funktion wird nicht sofort ausgeführt, wenn die Funktion aufgerufen wird. Stattdessen wird es erst ausgeführt, wenn die AJAX-Anfrage abgeschlossen ist und die Antwort empfangen wurde.
Lösung: Rückrufe verwenden
Um dieses Problem zu beheben, sollten Sie Folgendes angeben eine Rückruffunktion für die Funktion get_data. Dieser Rückruf wird ausgeführt, wenn die AJAX-Anfrage abgeschlossen ist und die Antwortdaten verfügbar sind. Der geänderte Code würde so aussehen:
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); } } }); } }
Der aufrufende Code würde dann geändert, um eine Rückruffunktion zu übergeben:
get_data(data, destination, function (test) { notice(test); });
Auf diese Weise können die Antwortdaten innerhalb verarbeitet werden die Rückruffunktion, wenn die AJAX-Anfrage abgeschlossen ist.
Das obige ist der detaillierte Inhalt vonWie kann ich auf den Rückgabewert eines asynchronen AJAX-Aufrufs zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!