Kann mir jemand helfen?
Ich kann den Unterschied zwischen success
und .done()
von nicht verstehen $.ajax
.
Wenn möglich, geben Sie bitte Beispiele.
jquery
jquery-deferred
Poonam Bhatt
quelle
quelle
Antworten:
Kurz gesagt, Entkoppeln der erfolgreichen Rückruffunktion von der Ajax-Funktion, damit Sie später Ihre eigenen Handler hinzufügen können, ohne den ursprünglichen Code (Beobachtermuster) zu ändern.
Weitere Informationen finden Sie hier: https://stackoverflow.com/a/14754681/1049184
quelle
success:
Verwendung als Parameter und.success()
als Methode für ajqXHR
. Letzteres wird abgelehnt, aber Ersteres ist das, wonach das OP gefragt hat.success
Wird nur ausgelöst, wenn der AJAX-Aufruf erfolgreich ist, dh letztendlich einen HTTP 200-Status zurückgibt.error
Wird ausgelöst, wenn dies fehlschlägt undcomplete
wenn die Anforderung beendet ist, unabhängig vom Erfolg.In jQuery 1.8 wurde das
jqXHR
Objekt (zurückgegeben von$.ajax
)success
durchdone
,error
mitfail
undcomplete
mit ersetztalways
.Sie sollten jedoch weiterhin in der Lage sein, die AJAX-Anforderung mit der alten Syntax zu initialisieren. Diese machen also ähnliche Dinge:
Diese Änderung dient der Kompatibilität mit dem zurückgestellten Objekt von jQuery 1.5 . Mit Deferred (und jetzt
Promise
mit vollständiger Unterstützung für native Browser in Chrome und FX) können Sie asynchrone Aktionen verketten:Diese Funktionskette ist einfacher zu pflegen als eine verschachtelte Pyramide von Rückrufen, mit denen Sie arbeiten
success
.Beachten Sie jedoch, dass dies
done
jetzt zugunsten der stattdessenPromise
verwendeten Syntax veraltet istthen
:Dies ist eine Übernahme wert, da
async
undawait
erweitert eine verbesserte Syntax (und Fehlerbehandlung) verspricht:quelle
success
, in jQuery 1.8 wurde das durch ersetztdone
. Sie funktionieren auf die gleiche Weise, sind jedochdone
konsistenter mit dem Rest von jQuery..done
war jQuerys früher (und jetzt Sackgasse) Stich in das, was wurdePromise
und das hat jetzt eine ziemlich umfassende Sprachunterstützung. In neuen Projekten würde ichconst response = await fetch(...)
stattdessen verwenden..success()
wird nur aufgerufen, wenn Ihr Webserver mit einem HTTP-Header mit 200 OK antwortet - im Grunde genommen, wenn alles in Ordnung ist.Die an done () angehängten Rückrufe werden ausgelöst, wenn der Aufschub behoben ist. Die an fail () angehängten Rückrufe werden ausgelöst, wenn die Zurückstellung abgelehnt wird.
quelle
success
ist der Rückruf, der aufgerufen wird, wenn die Anforderung erfolgreich ist und Teil des$.ajax
Aufrufs ist.done
ist tatsächlich Teil des von zurückgegebenenjqXHR
Objekts$.ajax()
und wirdsuccess
in jQuery 1.8 ersetzt.quelle