Ich habe einen Ajax Aufruf an eine API, die korrekt zurückgegeben wird (200), wenn die URL und die Parameter in Ordnung sind. Jetzt versuche ich einen Fehler mit einer schlechten Anfrage zu erzwingen. Die Konsole wird mich über den Fehlercode 400 informieren, scheint aber nie in die Fehlermethode zu geraten. Stattdessen bleibt es in einer jQuery-Zeile stecken und kehrt nie zurück.jquery Ajax Antwort Fehler funktioniert nicht
fetch: function(successCallback, errorCallback) {
var apiUrl = this.applyFilter(filters);
var self = this;
this.log('fetch', apiUrl, currentSearchMode);
$.ajax({
url: apiUrl,
type: 'GET',
cache: (debug) ? true: false,
processData: true,
crossDomain: true,
scriptCharset: 'UTF-8',
jsonp: 'callback',
dataType: 'jsonp',
success: function(data, statusText, jqXHR) {
console.log(jqXHR);
// if(jqXHR.status == 400){
// console.log('there is an error');
// }
self.log('fetch::success', data);
if (typeof data.error !== 'undefined') {
showNoResultError = true;
var appData = lastValidResult[currentSearchMode];
} else {
showNoResultError = false;
var appData = self.normalize[currentSearchMode](self, data);
lastValidResult[currentSearchMode] = appData;
}
if (typeof successCallback === 'function')
successCallback(appData);
},
error: function(jqXHR, textStatus, errorThrown) {
//do sth here
// if(jqXHR.status&&jqXHR.status==400){
// alert(jqXHR.responseText);
// }else{
// alert("Something went wrong");
// }
// console.log('works now');
// self.log('fetch::error', textStatus, errorThrown);
// if (typeof errorCallback === 'function')
// errorCallback.apply(this, arguments);
},
complete: function(jqXHR, textStatus) {
console.log(jqXHR);
console.log('complete');
}
});
},
Also das Bild zeigt, wo es stecken bleibt. Ich kann nur vollständige und erfolgreiche Funktionen erfassen, aber wenn eine Antwort von 400 auftritt, passiert nichts. Versuchte alles, auch done(), fail(), da ich annahm, dass es ein Problem mit veraltetem Verhalten geben könnte. Aber dasselbe Problem dort. Kann mir bitte jemand helfen?
Ist die URL gültig? Können Sie Ihre Browser-Konsole anzeigen? – ggderas
Ihr Server sollte den Typ der Anfrage unterstützen, die gesendet wird. –
Die URL ist gültig, wird aber absichtlich mit falschen Parametern aufgerufen, um einen 400-Statuscode zu erzeugen, der zurückgegeben wird, aber nicht von meinem Fehlercode behandelt wird. – kayoken