Alle AJAX-Anfragen auf einer Seite mit benutzerdefinierten Aktionen abfangen
F: Ist es möglich, alle AJAX-Anfragen auf einer Seite einzubinden? , entweder vor dem Senden oder während Ereignissen, um benutzerdefinierte Aktionen auszuführen?
A: Ja, das ist mit dem folgenden Ansatz möglich:
Abfangen von AJAX-Anfragen
Um alle AJAX-Anfragen auf einer Seite abzufangen, können wir die open()-Methode des XMLHttpRequest-Objekts überschreiben, die zum Initiieren der Anfragen verwendet wird. Durch das Abfangen der open()-Methode können wir unsere benutzerdefinierten Aktionen ausführen, bevor die Anfrage gesendet wird.
Hier ist der Code zum Abfangen von AJAX-Anfragen:
<code class="js">(function() { var origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function() { console.log('request started!'); this.addEventListener('load', function() { console.log('request completed!'); console.log(this.readyState); //will always be 4 (ajax is completed successfully) console.log(this.responseText); //whatever the response was }); origOpen.apply(this, arguments); }; })();</code>
Durch die Ausführung des obigen Codes können wir kann alle erforderlichen Aktionen ausführen, wie z. B. das Protokollieren der Anforderungs-URL, das Hinzufügen zusätzlicher Header oder das Ändern der Anforderungsdaten.
Skripte von Drittanbietern
Dieser Ansatz funktioniert sogar mit Skripte von Drittanbietern, die jQuery oder andere AJAX-Bibliotheken verwenden, da wir das zugrunde liegende XMLHttpRequest-Objekt abfangen, das von allen AJAX-Implementierungen verwendet wird. Es ist jedoch wichtig zu beachten, dass dieser Ansatz möglicherweise nicht mit der nativen Abruf-API funktioniert.
Zusätzliche Ressourcen
Weitere Informationen zur addEventListener-API zur Verarbeitung von AJAX-Ereignissen finden Sie unter an: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress
Browser-Unterstützung
Dieser Ansatz funktioniert Funktioniert nicht für Internet Explorer 8 oder früher.
Das obige ist der detaillierte Inhalt vonWie kann ich alle AJAX-Anfragen auf einer Seite mit benutzerdefinierten Aktionen abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!