2014-07-21 7 views
7

각도로 JSONP를 통해 데이터를 가져 오려고합니다. 나는 특정 상황에서 작동하지 않는 이유에 대해 의아해했습니다.JSON_CALLBACK을 반환하는 각도 JSONP가 정의되지 않았습니다. 오류

나는 성공적이 샘플 JSONP 끌어 당길 수있었습니다 :

https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Brian

그러나 S3에 양동이에 복사 할 때이 오류가 계속 :

Uncaught ReferenceError: JSON_CALLBACK is not defined

을 이 파일은 공개되어 있으며 $.ajax이 아니더라도 액세스 할 수 있지만 $http.jsonp

이 아닙니다.

  • 응용 프로그램/JSON
  • 응용 프로그램/자바 스크립트
  • 응용 프로그램/X-자바 스크립트
  • 텍스트/일반
  • :

    나는 다음의 모든 JSON 파일에 대한 MIME 유형을 변경하려고했습니다

  • 텍스트/자바 스크립트는

그들 중 아무도 나를 $http.jsonp을 통해 성공적인 통화를 할 수 없었다 기능

+0

"catch되지 않은 ReferenceError가 : JSON_CALLBACK은 정의되지 않은"- 당신의 질문은 코드 누락 JSON_CALLBACK 함수를 기본값으로 사용합니다. – Quentin

답변

1

각도 JSONP와 협력 할 때, 나는 며칠 전 나를 위해 일한 무엇을 보여줄 수있는 코드를 볼 수 없다는 : 뷰에서 다음

controller('YourCtrl', ['$scope', '$http', function($scope, $http) { 
var url = "https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Brian" 
$http.jsonp(url) 
    .success(function(data) { 
     $scope.greeting = data; 
    }); 
}]) 

는이 같은 작동합니다 :

<div ng-controller="YourCtrl"> 
{{greeting.name}} <br /> 
{{greeting.salutation}} 
</div> 

이 질문에 답을 얻지 못하면 코드를 붙여 넣으십시오.

+0

[Plunkr] (http://plnkr.co/edit/ESETufLS1nkgrsnYlNGl?p=preview) –

+0

바로 그게 내가하고있는 일입니다. – Brian

8

좋아, 그래서 이것은 매우 이상하다,하지만 난 결국 그 ... 아주 이상한 행동이 콜백 함수의 각도가 JSON_CALLBACK 대신 전화 오려고 때문에이 angular.callbacks._0JSON_CALLBACK(.......)에서 JSONP의 콜백 래퍼를 변경하여 일을 가지고 .

+0

사용중인 angular.js의 버전은 무엇입니까? – runTarm

+4

'$ http.jsonp'은 url의'JSON_CALLBACK'을'angular.callbacks. {{callbackId}} '로 자동 대체합니다. 웬일인지, 당신의 경우에 그렇게하지 못했습니다. – runTarm

+0

그래, 아주 이상한 행동이지만 어쨌든 내 하루를 구 했잖아! –

0

브라이언 나는 ?callback=JSON_CALLBACK을 감지하는 방법을 발견했습니다. 대신 내부 전체를 넣는의 URL에 대한 요청하는 경우, 당신은이 방법을 쓸 수 있습니다, 그것은 100 % 감지 :

$http({ 
    method: 'JSONP', 
    url: 'https://angularjs.org/greet.php' + '?callback=JSON_CALLBACK' + '&name=Brian"' 
}); 
-1
대신의

angular.callbacks._0 ({"name":"Super Hero","salutation":"Namaste","greeting":"Namaste Super Hero!"}); 

에 의해 서버에서 응답을 변경

JSON_CALLBACK ({"name":"Super Hero","salutation":"Pryvitannie","greeting":"Pryvitannie Super Hero!"}); 
0

문제는, 당신의 나머지 응답 또는 버킷에 HTTP json 파일에있는 GET (콜백) 매개 변수를 동적해야합니다.

jsonp을 얻으려면 콜백 매개 변수를 감지하여 json에 연결해야합니다.예를 들어

:

1) http://example.com?callback=JSONP_CALLBACK 
2) http://example.com?callback=OtherCallback 
3) http://example.com?callback=JSONP_CALLBACK_OTHER 

는 "콜백"를 만드는 GET 매개 변수를 얻을이처럼 나머지 :

1) JSONP_CALLBACK({YOUR REST INFO}) 
2) OtherCallback({YOUR REST INFO}) 
3) JSONP_CALLBACK_OTHER({YOUR REST INFO}) 
관련 문제