在 Angular JS 1.6 中处理 JSONP 响应
Posted
技术标签:
【中文标题】在 Angular JS 1.6 中处理 JSONP 响应【英文标题】:Handling JSONP response in Angular JS 1.6 【发布时间】: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();。 任何链接或相同问题的链接都会有所帮助,谢谢!
【问题讨论】:
发布您的代码而不是发布图片 现在可以了吗?谢谢 【参考方案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;
【讨论】:
以上是关于在 Angular JS 1.6 中处理 JSONP 响应的主要内容,如果未能解决你的问题,请参考以下文章
如何在 angular.js 动作成功回调中访问 json 返回值
URL hash-bang (#!/) 前缀而不是 Angular 1.6 中的简单哈希 (#/)
angular.js > 如何在视图中获取内部 JSON 数据(使用 ng-repeat 指令)
如何在Angular.js $http.post中指定dataType:'json'?