Jua*_*oro 2 javascript wikipedia-api cors angularjs
我正在开发一个AngularJS应用程序,我想显示来自维基百科的一些信息,但我无法访问Angular中的数据,因为CORS限制.
$scope.wikipediaData = $http.get('http://es.wikipedia.org/w/api.php?titles='+$scope.country.name.toLowerCase()+'&rawcontinue=true&action=query&format=json&prop=extracts');
Run Code Online (Sandbox Code Playgroud)
它进行调用,我在firebug中看到它,我复制了url并将其粘贴到另一个选项卡中,我可以看到JSON响应.
在firebug中我也看到我必须激活CORS但我不知道该怎么做,我尝试了很多我在StackOverflow和其他网站上阅读的解决方案.
有人可以帮帮我吗?
谢谢
AWo*_*olf 12
您可以使用JSONP来避免CORS问题.
简而言之:服务器必须支持JSONP,因为它将创建一个返回字符串,并将回调作为返回JSON的包装器.然后你的回调函数将获得JSON作为参数.您无需管理,因为Angular会为您处理此问题.
您只需要添加&callback=JSON_CALLBACK到您的网址并使用$http.jsonp.
请看下面的演示和jsfiddle的演示.
(维基百科有回复,但我不知道回报是否符合您的要求.)
var app = angular.module('myApp', []);
app.factory('wikiService', function($http) {
var wikiService = {
get: function(country) {
return $http.jsonp('http://es.wikipedia.org/w/api.php?titles=' + country.name.toLowerCase() + '&rawcontinue=true&action=query&format=json&prop=extracts&callback=JSON_CALLBACK');
}
};
return wikiService;
});
app.controller('MainController', function($scope, wikiService) {
wikiService.get({name: 'Germany'}).then(function(data) {
console.log(data);
$scope.wikiData = data.data;
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="MainController">
<pre ng-bind="wikiData | json"></pre>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1965 次 |
| 最近记录: |