【问题标题】:Handling JSONP response in Angular JS 1.6在 Angular JS 1.6 中处理 JSONP 响应
【发布时间】:2018-01-22 01:36:03
【问题描述】:

如何处理 jsonp 响应?我试图搜索,但我无法解决它。下面的屏幕截图显示了一个 jsonp 结果。1 我使用此代码 services.js 得到 jsonp 响应

var app=angular.module('F1FeederApp.services', []);
 app.config(function($sceDelegateProvider) {  
	$sceDelegateProvider.resourceUrlWhitelist([
    'self',
    'http://ergast.com/**'
  ]);
});
 app.factory('ergastAPIservice', function($http) {

    var ergastAPI = {};
    var urlFiltered = 'http://ergast.com/api/f1/current/driverStandings.json';
    ergastAPI.getDrivers = function() {
      return $http({
        method: 'JSONP', 
        url: urlFiltered
      });
    }
    
    return ergastAPI;
  });

现在,我使用下面的代码访问它,并在第一张图片上给我结果。

angular.module('F1FeederApp.controllers', []).
  controller('driversController', function($scope, ergastAPIservice) {
    $scope.nameFilter = null;
    $scope.driversList = [];

    // //ergastAPIservice.getDrivers() ->> when i try this i get error this is not a function.
    //ergastAPIservice.getDrivers().success(function (response) {
        //Dig into the responde to get the relevant data
    //    $scope.driversList = response.MRData.StandingsTable.StandingsLists[0].DriverStandings;
    //});
    //code above doesnt work so i tried to access it or atleast show a value like
    // the code below
    console.log(ergastAPIservice.getDrivers());
    console.log(ergastAPIservice.getDrivers().MRData.StandingsTable.StandingsLists[0].DriverStandings);
  });

现在我使用 console.log(jsonp response) 得到了第一张图片。 我如何才能获得该响应中的驱动程序列表? 比如:collectionVar = response.getDrivers();。 任何链接或相同问题的链接都会有所帮助,谢谢!

【问题讨论】:

  • 发布您的代码而不是发布图片
  • 现在可以了吗?谢谢

标签: javascript angularjs json api jsonp


【解决方案1】:

做这样的事情。这应该工作。你得到了一个承诺。 Promise 的处理方式如下。详细了解promise

   app.controller("testController", function($scope,testService){
        testService.getDrivers ()
            .then(function (response) {
                $scope.standingTable = response.data.MRData.StandingsTable.StandingsLists[0].DriverStandings;
                // handle valid reponse

            },
            function(error) {
                //handel error
            });


    }

【讨论】:

  • 有人否决了这个答案只是想知道为什么:/
【解决方案2】:

非常感谢诺曼!起初我不知道我得到了 angular promise 响应。虽然我想得到司机常备名单。所以我使用这个代码。

 $scope.driversList = response.data.MRData.StandingsTable.StandingsLists[0].DriverStandings;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2012-03-14
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    相关资源
    最近更新 更多