2014-02-18 2 views
0

Эй, ребята, я пытаюсь использовать API EPA, который ежедневно предоставляет информацию об УФ-индексе в JSON.Чтение Angular.js Внешний адрес JSON

Ссылка Я пытаюсь читать в данный момент:

http://iaspub.epa.gov/enviro/efservice/getEnvirofactsUVHOURLY/ZIP/33126/JSON?callback=callBackFn 

Если открыть эту ссылку он показывает действительный JSON, но, когда я использую его в моем Angular.js коде не читать, и моя переменная остается неизменной. Мой код:

var tanApp = angular.module('tanApp') 
.controller('MainCtrl', ['$scope', '$http', function ($scope, $http) { 
$scope.awesomeThings = [ 
    'HTML5 Boilerplate', 
    'AngularJS', 
    'Karma' 
]; 
$scope.data = 'unknown'; 
    $http.get('http://iaspub.epa.gov/enviro/efservice/getEnvirofactsUVHOURLY/ZIP/33126/JSON?callback=callBackFn').success(function(data){ 
     $scope.data = data; 
}); 
    tanApp.config(['$httpProvider', function($httpProvider) { 
    $httpProvider.defaults.useXDomain = true; 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    }]); 

Мой HTML-код {{data}}.

Когда я вынимаю часть «JSON», она появляется как XML, так как она по умолчанию, и на самом деле она появляется, но мне она нужна как JSON.

Может кто-нибудь может заставить это работать или оказать некоторую помощь? Я могу предложить биткойну как щедрость.

Спасибо!

ответ

0

Вы пробовали это, используя $http.jsonp() вместо $http.get(). Также, если вы используете $http.jsonp(), тогда обратный вызов должен быть установлен на "JSON_CALLBACK".

например.

$http.jsonp('http://iaspub.epa.gov/enviro/efservice/getEnvirofactsUVHOURLY/ZIP/33126/JSON?callback=JSON_CALLBACK') 
    .success(function(data){ 
     $scope.data = data; 
    } 
+0

Все еще неизвестно. Не уверен, может быть, мне нужно зарегистрироваться для доступа к API? – user2259122

1

Проблема в том, что URI, который вы используете, возвращает необработанный JSON вместо JSONP. Вы можете либо настроить прокси-сервер на стороне сервера, либо проверить у своего поставщика API, чтобы узнать, есть ли способ получить действительный ответ JSONP.

Если вы можете получить действительный JSONP, вам также потребуется настроить обратный вызов для обработки ответа.

В этом случае обратитесь к принятому ответу за this question.

+0

Итак, я ничего не могу сделать с сырым JSON? API - это API-интерфейс RESTful Data Service, это что-то меняет? – user2259122

+0

Я не вижу никакого способа получить ответ JSONP со своих серверов, и их ответ JSON не возвращается с необходимыми заголовками для CORS. Таким образом, кажется, что ваш единственный вариант - установить прокси-сервер либо в том же домене, на котором размещено ваше приложение, либо на другом сервере, который предоставит вам необходимые заголовки CORS или действительный JSONP. –

+0

Я очень ценю это marck, можете ли вы указать мне на ресурс, где я могу узнать больше о настройке этого прокси? – user2259122

Смежные вопросы