Heim >Web-Frontend >js-Tutorial >Warum gibt meine AJAX-Funktion keine Variable zurück und wie kann ich das Problem mithilfe von Rückrufen beheben?

Warum gibt meine AJAX-Funktion keine Variable zurück und wie kann ich das Problem mithilfe von Rückrufen beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-08 20:17:17255Durchsuche

Why Doesn't My AJAX Function Return a Variable, and How Can I Fix It Using Callbacks?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn