Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

635
Views
Cómo leer la respuesta de error JSON de $http si responseType es arraybuffer

Cargo algunos datos binarios usando

 $http.post(url, data, { responseType: "arraybuffer" }).success( function (data) { /* */ });

En caso de error, el servidor responde con un objeto JSON de error como

 { "message" : "something went wrong!" }

¿Hay alguna forma de obtener la respuesta de error en un tipo diferente a una respuesta de éxito?

 $http.post(url, data, { responseType: "arraybuffer" }) .success(function (data) { /* */ }) .error(function (data) { /* how to access data.message ??? */ })
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Editar: como señala @Paul LeBeau, mi respuesta asume que la respuesta está codificada en ASCII.

Básicamente, solo necesita decodificar el ArrayBuffer en una cadena y usar JSON.parse().

 var decodedString = String.fromCharCode.apply(null, new Uint8Array(data)); var obj = JSON.parse(decodedString); var message = obj['message'];

Realicé pruebas en IE11 y Chrome y esto funciona bien.

over 4 years ago · Santiago Trujillo Report

0

La respuesta de @smkanadl asume que la respuesta es ASCII. Si su respuesta está en otra codificación, eso no funcionará.

Los navegadores modernos (por ejemplo, FF y Chrome, pero aún no IE) ahora admiten la interfaz TextDecoder que le permite decodificar una cadena de un ArrayBuffer (a través de un DataView ).

 if ('TextDecoder' in window) { // Decode as UTF-8 var dataView = new DataView(data); var decoder = new TextDecoder('utf8'); var response = JSON.parse(decoder.decode(dataView)); } else { // Fallback decode as ASCII var decodedString = String.fromCharCode.apply(null, new Uint8Array(data)); var response = JSON.parse(decodedString); }
over 4 years ago · Santiago Trujillo Report

0

Supongamos que en su servicio tiene una función que está usando como, Esto es para Angular 2

 someFunc (params) { let url = 'YOUR API LINK'; let headers = new Headers(); headers.append('Content-Type', 'application/json'); headers.append('Authorization','Bearer ******'); return this._http .post(url, JSON.stringify(body), { headers: headers}) .map(res => res.json()); }

Asegúrese de que cuando lo devuelva sea res.json() y no res.json. Espero que ayude, a cualquiera que tenga este problema.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!