代码之家  ›  专栏  ›  技术社区  ›  WebDevKid

无法使用ngResource检索JSON

  •  0
  • WebDevKid  · 技术社区  · 7 年前

    http://api.football-data.org/code_samples

    如您所见,我没有可以使用的Angular JS示例,我正在尝试复制javascript示例。

    http://api.football-data.org/v1/competitions/424

    这是我试图通过ngResource方式显示的数据。我遵循了我的教程,如果可能的话,我想有人做一个例子,用这种方式,请。附笔。 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);
    }]);
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Fetrarij    7 年前

    花点时间阅读 $resource ,您出现了一些错误,例如设置标题。

    用法:
    $resource(url,[paramDefaults],[actions],options);

    paramDefaults:url参数的默认值。

    因此,对于您定义的资源,令牌不会转到标头,而是作为参数,API将返回404。您应该为每个方法设置标题:

    你不需要使用jsonp, get 将起作用

    如:

    $resource("http://api.football-data.org/v1/competitions/:competitionId", {}, {    
      get: {
        method: "GET",
        headers: {
          "X-Auth-Token": "<API TOKEN KEY>"
        }
      }
    });
    

    调用方法:

    没有主体的“集体”行动:资源。动作([参数], [成功]、[错误])与主体的“类”动作:

    这么说吧 收到 比赛id 424是:

      $scope.footballAPI.get({
        competitionId: 424
      }, function(data) {
        $scope.fussball = data;       
      }, function(err) {
        console.log('error:', err);
      });