jQuery $ Schnipsel und readyStates
-
29-09-2019 - |
Frage
Wie der Ajax Verbindungsstatus auf der jQuery $.ajax
Methode aufrufe?
Lösung
$.ajax()
gibt das XMLHttpRequest-Objekt, also wenn Sie wirklich zugreifen möchten sie wie die Zustandsänderungen, Sie können dies tun:
var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };
Aber die eingebaute in Rückrufe sollte alles, was Sie für die meisten Anwendungen benötigen, vor allem success
und complete
.
, Dinge zu tun, bevor die Anfrage Brände, Verwendung beforeSend
, oder besser für die meisten Fälle, die .ajaxStart()
und .ajaxStop()
Veranstaltungen ... zum Beispiel eine Lade Nachricht zu zeigen, sobald eine ajax-Aktivität vor sich geht.
Andere Tipps
Methode, getestet mit jQuery 2.0.2:
$.ajax({
beforeSend: function (jqXHR, settings) {
var self = this;
var xhr = settings.xhr;
settings.xhr = function () {
var output = xhr();
output.onreadystatechange = function () {
if (typeof(self.readyStateChanged) == "function") {
self.readyStateChanged(this);
}
};
return output;
};
},
readyStateChanged: function (xhr) {
if (xhr.readyState == 1) {
/* Connected! Do something */
}
},
url: "..."
});
Im Grunde, was ich brauchte, war ein Rückruf nach readyState
wird 1
(Connected), die, in meinem Fall war nützlich, wenn lange Polling "Push" Benachrichtigungen mit jQuery zu implementieren.
Es soll möglich sein, alles, was Sie, indem Sie Rückrufe für die success
, error
müssen zu bekommen, und complete
Optionen im Objekt, das Sie in die ajax()
-Methode übergeben. Werfen Sie einen Blick in die Dokumentation:
http://api.jquery.com/jQuery.ajax/
Im Prinzip funktioniert es wie folgt aus:
$.ajax({
url: 'ajax/test.html',
success: function(data) {
alert('Load was performed.');
},
error: function() {alert("error occurred.")},
complete: function() {alert("ajax complete.")}
});
Sie können die Dokumentation für genau sehen, welche Parameter Sie den Zugriff auf in den Callback-Funktionen haben.