Heim >Web-Frontend >js-Tutorial >Wie definiere ich eine jQuery-AJAX-Erfolgsrückruffunktion außerhalb des .ajax()-Blocks?

Wie definiere ich eine jQuery-AJAX-Erfolgsrückruffunktion außerhalb des .ajax()-Blocks?

DDD
DDDOriginal
2024-10-18 19:23:29331Durchsuche

How to Define jQuery AJAX Success Callback Function Outside of .ajax() Block?

jQuery AJAX Success Callback Function Definition Outside .ajax() Block

In jQuery können Sie Daten von einem Server mithilfe des $ abrufen. ajax()-Methode. Normalerweise wird die Erfolgsrückruffunktion innerhalb des .ajax()-Blocks definiert. Es ist jedoch möglich, den Rückruf außerhalb des Blocks zu definieren.

Definieren der Rückruffunktion außerhalb des .ajax()-Blocks

Um den Erfolgsrückruf außerhalb des .ajax()-Blocks zu definieren. ajax()-Block verwenden, sollten Sie das Ergebnis von $.ajax() wie folgt zurückgeben:

<code class="javascript">function getData() {
    return $.ajax({
        url: 'example.com',
        type: 'GET'
    });
}</code>

Dann können Sie die .done()-Methode verwenden, um den Rückruf außerhalb des .ajax()-Aufrufs hinzuzufügen :

<code class="javascript">getData().done(handleData);</code>

Verarbeitung der Daten

Die handleData-Funktion kann wie folgt definiert werden:

<code class="javascript">function handleData(data) {
    alert(data);
    // Do other stuff
}</code>

Die an die handleData-Funktion übergebenen Daten sind die vom Server zurückgegebenen Daten.

Vorteile der Definition des Rückrufs außerhalb des .ajax()-Blocks

Die Definition des Rückrufs außerhalb des .ajax()-Blocks bietet mehrere Vorteile:

  • Entkoppelt die AJAX-Verarbeitung von der Rückrufverarbeitung.
  • Ermöglicht das Hinzufügen mehrerer Rückrufe, Fehlerhandler usw.
  • Ermöglicht eine einfachere Synchronisierung mehrerer asynchroner Ereignisse.

Beispiel

Der folgende Code zeigt, wie diese Technik verwendet wird:

<code class="javascript">// A trivial timer for demo purposes
var timer = $.Deferred();
setTimeout(timer.resolve, 5000);

// Add a `done` and an `error` handler to the AJAX call
var ajax = getData().done(handleData).fail(error);

// Wait for both the AJAX call and the timer to finish
$.when(timer, ajax).done(function() {
    // Both operations have finished
});

// Add an additional `done` handler to the AJAX call
ajax.done(function() {
    // Can be added even if the AJAX call has already finished
});</code>

Diese Technik kann nützlich sein, um die AJAX-Funktionalität von den nachfolgenden Aktionen zu entkoppeln und mehrere asynchrone Vorgänge zu synchronisieren.

Das obige ist der detaillierte Inhalt vonWie definiere ich eine jQuery-AJAX-Erfolgsrückruffunktion außerhalb des .ajax()-Blocks?. 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