2015-01-04 17 views
13
को जवाब पार्स नहीं

मैं अपने सर्वर में एक "test.ini" फ़ाइल है, निम्न पाठ होते हैं:

"[ALL_OFF] 
[ALL_ON] 
" 

मैं $http के माध्यम से इस फाइल की सामग्री प्राप्त करने के लिए कोशिश कर रहा हूँ

var params = { url: 'test.ini'}; 
$http(params).then(
       function (APIResponse) 
        { 
        deferred.resolve(APIResponse.data); 
        }, 
        function (APIResponse) 
        { 
        deferred.reject(APIResponse); 
        }); 

यह कार्रवाई एक कोणीय अपवाद मिल गया (सिंटैक्स त्रुटि:: अनपेक्षित टोकन ए) सेवा, यहाँ मेरी समारोह का हिस्सा है।
मैं कोणीय ढांचे फ़ाइल को खोला, और मैं अपवाद पाया:
क्योंकि पाठ फ़ाइल की सामग्री के साथ शुरू "[" और के साथ समाप्त "]", कोणीय "लगता है कि" एक JSON फ़ाइल है।

यहाँ कोणीय कोड (1.2.23 संस्करण में लाइन 7474) है:

var defaults = this.defaults = { 
    // transform incoming response data 
    transformResponse: [function(data) { 
     if (isString(data)) { 
     // strip json vulnerability protection prefix 
     data = data.replace(PROTECTION_PREFIX, ''); 
     if (JSON_START.test(data) && JSON_END.test(data)) 
      data = fromJson(data); 
     } 
     return data; 
    }], 

मेरा प्रश्न:

कैसे कर सकते हैं मैं बल कोणीय को नहीं इस चेक बनाने (if (JSON_START.test(data) && JSON_END.test(data))) और नहीं जेएसओएन को पाठ प्रतिक्रिया का विश्लेषण करें?

+0

अपने सर्वर को 'टेक्स्ट/सादा' के साथ फ़ाइल वापस करने के लिए बनाएं, तो यह किसी भी बदलाव के लिए बस – maurycy

उत्तर

35

आप इस से चूक ओवरराइड कर सकते हैं:

$http({ 
    url: '...', 
    method: 'GET', 
    transformResponse: [function (data) { 
     // Do whatever you want! 
     return data; 
    }] 
}); 

समारोह ऊपर डिफ़ॉल्ट समारोह की जगह आप इस HTTP अनुरोध के लिए postet है।

या this पढ़ें जहां उन्होंने "प्रति अनुरोध डिफ़ॉल्ट परिवर्तन ओवरराइडिंग" लिखा था।

+16

या बस 'ट्रांसफॉर्मेशन: अपरिभाषित' ठीक काम करेगा। – dfsq

+1

@dfsq यह उत्तर मैंने देखा - "transformResponse: अपरिभाषित", धन्यवाद! – cheziHoyzer

+0

@dfsq आपको उस टुकड़े को मिला जो दस्तावेज़ों से गुम था। : डी – Superole

7

तुम भी सादा पाठ और नहीं JSON के रूप में प्रतिक्रिया के इलाज के लिए कोणीय के लिए मजबूर कर सकते हैं:

$http({ 
    url: '...', 
    method: 'GET', 
    responseType: 'text' 
}); 

यह सुनिश्चित करें कि कोणीय ऑटो करने की कोशिश नहीं करता है सामग्री प्रकार का पता लगाने कर देगा।

+0

काम नहीं कर रहा है, AngularJS v1.5.2 – elprup

+0

यह काम नहीं करता है क्योंकि प्रतिक्रिया शीर्षलेख में 'सामग्री-प्रकार' गलत है (शायद 'एप्लिकेशन/जेसन')। वास्तव में यदि सर्वर सही 'सामग्री-प्रकार' प्रदान करता है तो आपको अपनी कॉन्फ़िगरेशन में 'प्रतिक्रिया टाइप:' टेक्स्ट 'जोड़ने की आवश्यकता नहीं है, और कोणीय इसका सम्मान करेगा। –

+0

@AlirezaMirian यह सच है। कोणीय में इसे जोड़ने का एकमात्र कारण यह है कि सर्वर द्वारा कोई 'सामग्री-प्रकार' प्रदान नहीं किया गया है, तो यह JSON के रूप में इसे पार्स करने का प्रयास नहीं करता है। – Ties

संबंधित मुद्दे