作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 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');
它发出调用,我在 firebug 中看到它,我复制了 url 并将其粘贴到另一个选项卡中,我可以看到 JSON 响应。
在 Firebug 中,我也看到我必须激活 CORS,但我不知道该怎么做,我尝试了很多我在 StackOverflow 和其他网站上阅读过的解决方案。
谁能帮帮我?
谢谢
最佳答案
你可以使用 JSONP避免 CORS 问题。
简而言之:服务器必须支持 JSONP,因为它会创建一个带有回调的返回字符串作为返回 JSON 的包装器。然后你的回调函数将获取 JSON 作为参数。您不需要管理它,因为 Angular 会为您处理。
您只需将 &callback=JSON_CALLBACK
添加到您的 url 并使用 $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;
});
});
<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>
关于javascript - AngularJS:使用来自维基百科 API 的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442008/
我是一名优秀的程序员,十分优秀!