2013-08-31 2 views
2

AngularJS's source에서 볼 수 있듯이 HTTP 코드를 200-299 범위로 반환하는 $ http.post 요청은 success() 콜백을 트리거합니다 응답에 잘못된 데이터 (예 : 잘못된 JSON)가 포함 된 경우

나는 특히 내 전화 responseType: 'json'을 설정 중이며, 그 외에도 뭔가 다시 돌아 오면 성공 콜백이 시작됩니다. 이것은 PHP의 display_errors 설정이 켜져있는 개발 서버에서 특히 성가신 일입니다. 서버 측과 PHP가 오류 메시지를 출력하면 AngularJS 앱은이를 감지하지 않고 계속 행복하게 메시지를 보냅니다.

이 문제를 방지 할 방법이 있습니까? 응답 데이터가 유효하지 않은 경우 AngularJS 앱에서 error() 콜백을 발생 시키려면 JSON을 사용 하시겠습니까?

감사합니다.

답변

2

PHP 서버가 오류가 발생해도 200 오류 코드로 응답합니까? PHP를 알지 못해서, 이것은 나에게 서버 설정 문제처럼 느껴진다. 페이로드로 500 오류가 발생할 것으로 예상됩니다. 즉, 제가 생각할 수있는 두 가지가 있습니다.

$http에는 transformResponse 핸들러가 포함되어있어 문제에 대한 응답을 검사하도록 설정할 수 있습니다.

$http에는 응답 페이로드를 가져 와서 처리 할 수있는 "인터셉터"개념이 포함되어 있습니다. 인터셉터를 사용하여 응답을 "거부"할 수 있습니다. $http 문서에

transformResponse에 대한 정보 "인터셉터". 정보 주셔서 http://docs.angularjs.org/api/ng $ HTTP

+1

감사합니다. 방금 응답을 변형 시키려고했지만 곧 코드 경로가 success() 콜백을 통과하기 때문에 JSON이 유효하지 않음을 감지하면 아무 것도 할 수 없다는 것을 알게되었습니다. 인터셉터를 사용하면 전체를 거부 할 수있는 능력이있는 것 같습니다. 유일한 문제는 나에게 검은 색 마술처럼 보입니다 (아직 AngularJS를 배우므로) 먼저 읽어야 할 것이 있습니다. Angular 문서가 n00b 지향적이지 않은 것은 부끄러운 일입니다. – Julian

+2

다음 예제를 인터셉터로보실 수 있습니다 : http://stackoverflow.com/questions/11956827/angularjs-intercept-all-http-json- 답변? rq = 1 –

+1

@meconroy 그 링크가 맑게 만들었습니다. 고마워요! 인터셉터는 결국 힘들지 않게 판명되었습니다. – Julian

관련 문제