2015-01-04 5 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); 
        }); 

이 작업에는 각도 예외 (SyntaxError : 예기치 않은 토큰 A)가 있습니다.
나는 각 프레임 워크 파일을 열, 그리고 나는 exeption을 발견 : 텍스트 파일의 내용이 시작 "["로 끝 "]는"각도 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))) 및 이 아닌 JSON에 대한 텍스트 응답을 구문 분석 하시겠습니까?

+0

서버가'text/plain'을 사용하여 파일을 반환하도록 만드십시오. 그러면 단지 잘 작동합니다. – maurycy

답변

35

이가 기본값을 재정의 할 수

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

기능은 위의 기본 기능을 대체이 HTTP 요청에 대한 postet 있습니다.

또는 this에서 "요청에 따라 기본 변환 무시"를 작성하십시오.

+16

변환하지 않으려면 단순히 'transformResponse : undefined'를 사용하십시오. – dfsq

+1

@ dfsq이 대답은 내가 찾은 답변 - "transformResponse : undefined", 감사합니다! – cheziHoyzer

+0

@dfsq 문서에서 누락 된 부분을 발견했습니다. : D – Superole

7

또한 일반 텍스트가 아닌 JSON과 같은 응답을 치료하기 위해 각 강제 할 수

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

이 각도 콘텐츠 유형을 자동으로 인식하지 않도록 할 것입니다.

+0

작동하지 않는 것 같습니다, AngularJS v1.5.2 – elprup

+0

응답 헤더의'content-type'이 잘못 되었기 때문에 (아마'application/json') 작동하지 않습니다. 실제로 서버가 올바른'content-type '을 제공한다면 여러분의 설정에'responseType :'text''을 추가 할 필요가 없으며, 각도는 그것을 존중할 것입니다. –

+0

@AlirezaMirian 사실입니다. Angular로 추가하는 유일한 이유는 서버가 'content-type'을 제공하지 않으면 JSON으로 구문 분석하지 않기 때문입니다. – Ties