嘿伙计们我正在尝试使用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。
有人可能会让这个工作或提供一些帮助吗?我可以提供比特币作为赏金。
谢谢!
答案 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;
}