无法使用 ngResource 检索 JSON
Cannot retrieve JSON, using ngResource
我正在尝试从 URL 中检索一些 JSON,但我一无所获。这是我正在尝试构建的小型足球应用程序(可能供个人使用),主要是为了更好地使用 Angular 1,(在使用 Angular 2 之前)。
http://api.football-data.org/code_samples
如您所见,没有我可以使用的 Angular JS 示例,我正在仔细尝试复制 javascript 示例。
http://api.football-data.org/v1/competitions/424
这是我试图通过 ngResource 方式显示的数据。我遵循了 Udemy 教程,如果可能的话,我希望有人用这种方式做一个例子。 P.S。 API 密钥免费 (http://api.football-data.org/client/register)!只需发送电子邮件,您将立即收到回复!
如果有人可以帮我解决这个问题。非常感谢。
谢谢
HTML
<!DOCTYPE html>
<html lang="en-gb" ng-app="quickEleven">
<head>
<title>AngularJS Football Stats</title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta charset="UTF-8">
<!-- load bootstrap and fontawesome via CDN -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
<style>
html, body, input, select, textarea
{
font-size: 1.05em !important;
}
</style>
<!-- load angular via CDN -->
<script src="//code.angularjs.org/1.3.0-rc.2/angular.min.js"></script>
<script src="//code.angularjs.org/1.3.0-rc.2/angular-route.min.js"></script>
<script src="//code.angularjs.org/1.3.0-rc.2/angular-resource.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<header>
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">AngularJS Football</a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><i class="fa fa-home"></i> Home</a></li>
</ul>
</div>
</nav>
</header>
<div class="container">
<div ng-controller="homeController"></div>
</div>
</body>
</html>
JS
// MODULE
var quickEleven = angular.module('quickEleven', ['ngRoute', 'ngResource']);
// CONTROLLERS
quickEleven.controller('homeController', ['$scope', '$resource', 'cityService', function($scope, $resource, cityService) {
$scope.footballAPI =
$resource("http://api.football-data.org/v1/competitions/424", {headers: {"X-Auth-Token": "<API TOKEN KEY>"}}, { get: { method: "JSONP"}
});
$scope.fussball = $scope.footballAPI.get({});
console.log($scope.fussball);
}]);
花点时间阅读有关 $resource 的内容,您犯了一些错误,例如设置 header.
USAGE:
$resource(url, [paramDefaults], [actions], options);
paramDefaults: Default values for url parameters.
因此,使用您定义的资源,令牌不会转到 header,而是作为参数,而 API 将 return 一个 404。您应该设置 headers每个方法:
而且你不需要使用 jsonp,get
就可以了
例如:
$resource("http://api.football-data.org/v1/competitions/:competitionId", {}, {
get: {
method: "GET",
headers: {
"X-Auth-Token": "<API TOKEN KEY>"
}
}
});
调用方法:
"class" actions without a body: Resource.action([parameters],
[success], [error]) "class" actions with a body:
Resource.action([parameters], postData, [success], [error])
因此为比赛 ID 424 调用 get
是:
$scope.footballAPI.get({
competitionId: 424
}, function(data) {
$scope.fussball = data;
}, function(err) {
console.log('error:', err);
});
我正在尝试从 URL 中检索一些 JSON,但我一无所获。这是我正在尝试构建的小型足球应用程序(可能供个人使用),主要是为了更好地使用 Angular 1,(在使用 Angular 2 之前)。
http://api.football-data.org/code_samples
如您所见,没有我可以使用的 Angular JS 示例,我正在仔细尝试复制 javascript 示例。
http://api.football-data.org/v1/competitions/424
这是我试图通过 ngResource 方式显示的数据。我遵循了 Udemy 教程,如果可能的话,我希望有人用这种方式做一个例子。 P.S。 API 密钥免费 (http://api.football-data.org/client/register)!只需发送电子邮件,您将立即收到回复!
如果有人可以帮我解决这个问题。非常感谢。
谢谢
HTML
<!DOCTYPE html>
<html lang="en-gb" ng-app="quickEleven">
<head>
<title>AngularJS Football Stats</title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta charset="UTF-8">
<!-- load bootstrap and fontawesome via CDN -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
<style>
html, body, input, select, textarea
{
font-size: 1.05em !important;
}
</style>
<!-- load angular via CDN -->
<script src="//code.angularjs.org/1.3.0-rc.2/angular.min.js"></script>
<script src="//code.angularjs.org/1.3.0-rc.2/angular-route.min.js"></script>
<script src="//code.angularjs.org/1.3.0-rc.2/angular-resource.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<header>
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">AngularJS Football</a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><i class="fa fa-home"></i> Home</a></li>
</ul>
</div>
</nav>
</header>
<div class="container">
<div ng-controller="homeController"></div>
</div>
</body>
</html>
JS
// MODULE
var quickEleven = angular.module('quickEleven', ['ngRoute', 'ngResource']);
// CONTROLLERS
quickEleven.controller('homeController', ['$scope', '$resource', 'cityService', function($scope, $resource, cityService) {
$scope.footballAPI =
$resource("http://api.football-data.org/v1/competitions/424", {headers: {"X-Auth-Token": "<API TOKEN KEY>"}}, { get: { method: "JSONP"}
});
$scope.fussball = $scope.footballAPI.get({});
console.log($scope.fussball);
}]);
花点时间阅读有关 $resource 的内容,您犯了一些错误,例如设置 header.
USAGE:
$resource(url, [paramDefaults], [actions], options);paramDefaults: Default values for url parameters.
因此,使用您定义的资源,令牌不会转到 header,而是作为参数,而 API 将 return 一个 404。您应该设置 headers每个方法:
而且你不需要使用 jsonp,get
就可以了
例如:
$resource("http://api.football-data.org/v1/competitions/:competitionId", {}, {
get: {
method: "GET",
headers: {
"X-Auth-Token": "<API TOKEN KEY>"
}
}
});
调用方法:
"class" actions without a body: Resource.action([parameters], [success], [error]) "class" actions with a body: Resource.action([parameters], postData, [success], [error])
因此为比赛 ID 424 调用 get
是:
$scope.footballAPI.get({
competitionId: 424
}, function(data) {
$scope.fussball = data;
}, function(err) {
console.log('error:', err);
});