Wie zu Lesen JSON-error-response von $http, wenn der responseType ist arraybuffer
Lade ich einige binäre Daten mit
$http.post(url, data, { responseType: "arraybuffer" }).success(
function (data) { /* */ });
Im Fehlerfall antwortet der server mit einem Fehler JSON-Objekt wie
{ "message" : "something went wrong!" }
Gibt es eine Möglichkeit um den Fehler zu erhalten Antwort in einem anderen Typ als ein Erfolg Antwort?
$http.post(url, data, { responseType: "arraybuffer" })
.success(function (data) { /* */ })
.error(function (data) { /* how to access data.message ??? */ })
- Sie können zurückkehren, was auch immer Fehlercode/Nachricht, die Sie möchten aus dem server. "Etwas ging schief" scheint wie ein
500
. So in der serverseitige code einmal fangen Sie den Fehler nicht wieder eine200
mit einer Fehlermeldung. Für server-Fehler es ist5xx
und für client-Fehler es ist4xx
- status-code !== 200.Ich will wissen, was schief gelaufen ist. Deshalb brauche ich, um die Fehlermeldung Lesen aus der Antwort.
- Status-code ist egal, für diese Frage. Die Frage ist, wie zu Lesen, die Fehler, die Antwort, ist auch eine arraybuffer.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit: Wie @Paul LeBeau Punkte aus, meine Antwort geht davon aus, dass die Antwort ist ASCII-kodiert.
Im Grunde brauchen Sie nur zu entschlüsseln, die ArrayBuffer in einen string und verwenden Sie JSON.parse().
Lief ich tests in IE11 & Chrome und das funktioniert gut.
@smkanadl Antwort davon ausgegangen, dass die Antwort ist "ASCII". Wenn Ihre Antwort ist in einem anderen encoding, das wird nicht funktionieren.
Modernen Browsern (zB. FF und Chrome, aber nicht IE noch) unterstützen jetzt die
TextDecoder
Schnittstelle, die erlaubt, Sie zu decodieren einer Zeichenfolge aus einerArrayBuffer
(über eineDataView
).Angenommen, in eurem Dienst, Sie haben eine Funktion, die Sie verwenden möchten, Dies ist für Winkel-2
Stellen Sie sicher, wenn Sie es zurück ist es res.json() und nicht res.json.
Hoffe es hilft, jemand, der über dieses Problem