【问题标题】:Angular.js reading External JSON AddressAngular.js 读取外部 JSON 地址
【发布时间】:2014-02-18 00:15:22
【问题描述】:

大家好,我正在尝试使用以 JSON 格式提供每日紫外线指数信息的 EPA API。

我现在要阅读的链接是:

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。

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

谢谢!

【问题讨论】:

    标签: json angularjs


    【解决方案1】:

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

    如果您可以获得有效的 JSONP,您还必须设置回调来处理响应。

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

    【讨论】:

    • 那么我对原始 JSON 无能为力吗? API 是一个 RESTful 数据服务 API,这会改变什么吗?
    • 我看不到任何从他们的服务器获取 JSONP 响应的方法,并且他们的 JSON 响应没有返回带有必要的 CORS 标头。因此,您唯一的选择似乎是设置代理,无论是在托管您的应用程序的同一域上,还是在另一台服务器上为您提供必要的 CORS 标头或有效的 JSONP。
    • 非常感谢,marck,您能否指出我可以了解有关设置此代理的更多信息的资源?
    • 查看this answer,包括警告。您可能需要联系服务提供商,看看他们是否可以提出符合其指导方针的最佳方法。
    • 谢谢马克。我可能会联系他们,看看他们怎么说。
    【解决方案2】:

    您是否尝试过使用$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;
        }
    

    【讨论】:

    • 仍然未知。不确定我是否必须注册 API 访问权限?
    猜你喜欢
    • 2021-11-20
    • 2013-04-03
    • 2016-03-10
    • 2011-03-16
    • 2021-06-03
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多