Ich habe ein Tool getestet, das einige asynchrone Ajax-Anforderungen auslöst. Die Antwort einer Anfrage kann eine andere abbrechen. Das funktioniert großartig, soweit ich das getestet habe (Chrome, Firefox), aber Edge möchte nicht abbrechen! Sobald die XmlHttpRequest blockiert ist, löst Edge einen Fehler aus - was ich nicht möchte.Edge-Trigger schlagen fehl, wenn ein XmlHttpRequest abgebrochen wird
Dies ist der Code (das von einem anderen Schnipsel abgebrochen wird):
xhr = $.ajax("my-url.php")
.done(function(json) {
var data = $.parseJSON(json);
if (data.data) {
// Yay data!
} else {
// Ahw no data or empty data
}
})
.fail(function(jqXHR, textStatus, error) {
// This is triggered by Edge, `error` is "abort"
var string = "An error occurred: " + error + ".";
alert(string);
})
.always(function() {
done = true;
});
Also, ist das Ergebnis ein Alarm ist ein Fehler aufgetreten: abbrechen. Frage eins: Warum ist Edge das tun? Behandelt XHR anders als andere Browser? Was ist der Standard? Zweitens, wie stelle ich sicher, dass ich diese Nachricht nicht zeige? Kann ich einfach in fail()
etwas tun, oder ist das nicht ein ziemlich Weg, um darüber zu gehen:
if (error != 'abort') {
// Do stuff, only when error isn't abort
}