Angular.js读取外部JSON地址

时间:2014-02-18 00:15:22

标签: json angularjs

嘿伙计们我正在尝试使用EPA API来提供JSON中的每日UV索引信息。

我正在尝试阅读的链接是:

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。

有人可能会让这个工作或提供一些帮助吗?我可以提供比特币作为赏金。

谢谢!

2 个答案:

答案 0 :(得分:1)

问题是你正在使用的URI返回原始JSON而不是JSONP。您可以设置服务器端代理,也可以与API提供商核实,看看是否有办法获得有效的JSONP响应。

如果你能获得有效的JSONP,你还必须设置一个回调来处理响应。

在这种情况下,请参考this question的已接受答案。

答案 1 :(得分:0)

您是否使用$http.jsonp()代替$http.get()尝试了此操作。此外,如果您使用$http.jsonp(),则回调应设置为"JSON_CALLBACK"

e.g。

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