javascript - अगर प्रतिक्रिया Type arraybuffer है तो $ http से JSON त्रुटि प्रतिक्रिया कैसे पढ़ें




angularjs angular-http (2)

@ smkanadl का जवाब मानता है कि प्रतिक्रिया ASCII है। यदि आपकी प्रतिक्रिया दूसरे एन्कोडिंग में है, तो वह काम नहीं करेगा।

आधुनिक ब्राउज़र (जैसे। FF और Chrome, लेकिन IE अभी तक नहीं) अब TextDecoder इंटरफ़ेस का समर्थन करते हैं जो आपको ArrayBuffer ( 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);
}

मैं कुछ बाइनरी डेटा का उपयोग करके लोड करता हूं

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

त्रुटि के मामले में, सर्वर त्रुटि के साथ प्रतिक्रिया करता है जैसे JSON ऑब्जेक्ट

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

क्या सफलता की प्रतिक्रिया की तुलना में एक अलग प्रकार में त्रुटि प्रतिक्रिया प्राप्त करने का कोई तरीका है?

$http.post(url, data, { responseType: "arraybuffer" })
  .success(function (data) { /*  */ })
  .error(function (data) { /* how to access data.message ??? */ })

मान लीजिए आपकी सेवा में, आपके पास एक फ़ंक्शन है जिसका आप उपयोग कर रहे हैं, यह 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());    
}

सुनिश्चित करें कि जब आप इसे वापस करते हैं तो यह res.json () है और res.json नहीं है। आशा है कि यह इस मुद्दे वाले किसी को भी मदद करता है





angular-http