2014-08-29 3 views
1

.json 파일을 원격 Firebase 서버에서 얻으려고합니다.Angbase를 통해 Firebase 호스팅에서 JSONP 파일 가져 오기

function fetchData(remoteJsonId){ 
    var url = "https://myAppName.firebaseapp.com/topics/"+remoteJsonID; 
    console.log(url); //This variable expands to the full domain name which is valid and      returns success both on wget and the browser 
    $http.jsonp(url).then(
     function(resp){ 

     }, 
     function(err){ 
      console.log(err.status) // This posts "404" on console. 
     } 
    ); 
} 

하지만 브라우저에서 JSON 파일로드를 url를 열면. 심지어 내가 wget url이라도 json 파일이로드됩니다. 그러나 각도를 통해 404을 반환합니다.

이제 .json 원격 파일이 구조를 갖는다 :

[ 
    { 
    "hello":"Europe" 
    }, 

    { 
    "hello":"USA" 
    } 
] 

상기 파일이 아닌 $ http.jsonp에()를 사용하여 $ http.get 페치 될 수있다(). JSONP는 위의 구조로 .json 파일을 구문 분석 할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?

+1

시도'$ http.jsonp ('HTTP : // myFireBaseApp.com/MyFolder/JSONFile ').' –

+0

업데이트 된 링크를 참조하십시오. – InfinitePrime

+0

링크를 삭제했습니다. 실제 링크를 제공 할 수 있습니까? (필자가 필요하다고 느끼는 경우 Firebase라는 이름을 지우시겠습니까?) 브라우저의 콘솔에서 어떤 URL이 호출되는지 확인할 수 있습니까? –

답변

1

$http.jsonp으로 전달하는 URL에 ?callback=JSON_CALLBACK을 지정해야합니다. Angular's $http.jsonp documentation에서

: 마지막 줄은 당신이 놓치고있는 것입니다

jsonp(url, [config]); 
Shortcut method to perform JSONP request. 

Parameters 
Param Type Details 
url  string 
Relative or absolute URL specifying the destination of the request. 
The name of the callback should be the string JSON_CALLBACK. 

있다.

간단한 예 (A 중포 기지 데이터베이스를 사용하지 중포 기지 호스팅) : 경우

var app = angular.module('myapp', []); 
app.controller('mycontroller', function($scope, $http) { 
    var url = 'https://yourfirebase.firebaseio.com/25564200.json'; 
    $http.jsonp(url+'?callback=JSON_CALLBACK').then(
    function(resp){ 
     console.log(resp.data); // your object is in resp.data 
    }, 
    function(err){ 
     console.error(err.status) 
    } 
); 
}); 

당신이 작업을보고 싶어 : http://jsbin.com/robono/1/watch?js,console

+0

여전히 404가 반환됩니다. 지구상에서 무슨 일이 일어나고 있습니까? – InfinitePrime

+0

firebase 작업을 위해 jsbin을 통해 제공 한 링크. 하지만 왜 내 꺼야? Firebase에 JSON 파일을 호스트하는 데 필요한 일종의 고유 한 설정입니까? – InfinitePrime

+0

'remoteJsonId'를 공유하지 않으므로 확신 할 수 없습니다. 그러나 나는 단지'? callback = JSON_CALLBACK'을 URL의 끝에 추가하는 것을 잊어 버렸다고 의심합니다. 이것은 제 대답의 첫 번째 줄에 나와 있습니다. 나는 당신의 코드 작업을하기 위해 최소한을 제외하고는 아무것도하지 않았다. 이 방법으로 문제가 해결되지 않으면 문제를 재현 할 수있는 바이올린/휴지통을 설치하는 것이 좋습니다. –