Wie überschreibt man jQuerys Verwendung von XMLHttpRequest in $ .ajax?

8

Ich muss addEventListener auf progress event warten, bevor die XMLHttp-Verbindung öffnet (d. h. xhr.open() ), aber die Methode beforeSend gibt eine bereits geöffnete xhr-Instanz zurück. Wie würde ich es überschreiben, um den Listener richtig hinzuzufügen?

( Hinweis: Sie müssen die Ereignis-Listener vor dem Aufruf von open () für die Anforderung hinzufügen. Andernfalls die Fortschrittsereignisse wird nicht schießen. )

    
Kot 29.11.2010, 11:54
quelle

1 Antwort

8

Sie können die xhr Funktion in ajaxSetup oder sogar bei jedem einzelnen $.ajax Aufruf außer Kraft setzen. Dies ist dokumentiert in der $.ajax Dokumentation (danke Nick!) .

Ihr Code sieht vielleicht so aus (ungetestet), wenn Sie dies alle mal machen wollen:

%Vor%

... oder wie folgt ( Live-Beispiel ) für eine bestimmte Anfrage:

%Vor%

Leider, obwohl das Überschreiben von xhr dokumentiert ist, scheint der Speicherort des aktuell konfigurierten ( jQuery.ajaxSettings.xhr ) nicht zu sein. Daher verlassen Sie sich technisch auf ein undokumentiertes Feature, indem Sie jQuery.ajaxSettings.xhr in verwenden dein Code. Sie müssen nur noch überprüfen, dass das immer noch bei jedem Punkt-Release vorhanden ist, es wird sich wahrscheinlich nicht zu sehr bewegen (und jQuery.ajaxSettings wird mindestens in den Dokumenten erwähnt, hier ).

    
T.J. Crowder 29.11.2010 12:00
quelle

Tags und Links