2010-08-11 4 views

Antwort

7

Success und complete sind bei here dokumentiert. Sie müssen sich nicht wirklich darum kümmern, welcher textStatus an die Funktionen übergeben wird, alles wird automatisch erledigt. Die Erfolgsfunktion wird aufgerufen, wenn/wenn der Aufruf erfolgreich ist, und complete wird am Ende von allem anderen aufgerufen.

Also als Beispiel von etwas, an dem ich arbeite, habe ich drei Funktionen verkettet, die ausgelöst werden, wenn Sie auf einen Abschnitt der Seite klicken: ein div blendet aus und wenn das erledigt ist, wird ein Ajax-Aufruf ausgeführt. Die Funktion success aktualisiert den Inhalt des div (während es ausgeblendet wird), und dann ruft die vollständige Funktion fadeIn auf dem div auf. Was es also tut, ist, dass es ausblendet, aktualisiert und mit neuem Inhalt wieder eingeblendet wird.

+0

Das ist die gleiche Dokumentationsverbindung, die ich in meine Frage einfüge. 'Complete' heißt nach' success' ODER 'error', oder? So kann 'complets' textStatus" Erfolg "oder einer der Fehlercodes sein. Und einige der anderen Antworten zeigen an, dass 'success' mit textStatus" notmodified "aufgerufen werden kann. – Robert

+4

Yeah, complete könnte einer der möglichen textStatus-Codes sein. Erfolg wird nur Erfolg oder nicht modifiziert werden. Notmodified wird verwendet, wenn es nur eine zwischengespeicherte Version verwendet, höchstwahrscheinlich - obwohl es für mich merkwürdig erscheint, dass der Erfolg genannt würde, wenn Sie im Wesentlichen sagen "Hey, nichts hat sich geändert". –

+1

Erfolg kann auch "nocontent" sein. jQuery 1.x kann 'success' zurückgeben und jQuery 2.x kann 'nocontent' für den gleichen Aufruf zurückgeben. – cyberwombat

2

Aus dem Blick auf die Quelle scheint, dass notmodified könnte ein Wert sein, obwohl ich es noch nie gesehen habe.

+0

notmodified ist wahrscheinlich der Wert verwendet, wenn Cache auf true gesetzt ist und es jsut verwendet eine Cache-Version. –

+0

@Alex - Glaube so – Adam

6

Erfolg kann nur beim Erfolg aufgerufen werden. Also ist die einfache Antwort nein.

Complete wird immer ausgeführt, unabhängig davon, was Ajax getan hat. So vollständig sollte es möglich sein, Werte zu erhalten, die textstatus zurückgeben kann.

Auf dem Forum fand ich textstatus

"timeout" 
"error" 
"notmodified" 
"success" 
"parsererror" 
jeder dieser Werte sein

http://forum.jquery.com/topic/jquery-ajax-textstatus-documented

+5

Ihre einfache Antwort ist nicht ganz richtig. Die jQuery-Quelle scheint zu zeigen, dass der 'Erfolg'-Callback ausgeführt wird, wenn 'notmodified' zurückgegeben wird. http://github.com/jquery/jquery/blob/master/src/ajax.js#L436 – user113716

+0

Die Antwort sollte aktualisiert werden, da sie nicht richtig und irreführend ist. textStatus im Erfolgsrückruf könnte andere Werte annehmen, wie in anderen Antworten beschrieben –

Verwandte Themen