[英]Why is Angular JS $http.get() not working in this code?
我正在尝试从链接获取RSS提要。 ng-click
函数getNews("SomeText")
正在运行,我已通过在容器中填充一些文本来确认它。 但是, $http.get()
无法正常工作。 我现在只想显示数据,我稍后再解析。
这是我的Angular JS代码。
var app = angular.module("app",[]);
app.controller("newsController", function($scope, $http) {
$scope.getNews = function(topic) {
if (topic === "NAmerica") {
//The program enters this part, I have confirmed, only $http.get() doesn't work
$http.get('http://www.usnews.com/rss/education')
.then(function (response) {
$scope.message = response;
});
}
};
});
我的HTML文件具有以下结构:
<html ng-app="app">
<body ng-controller="newsContainer">
<a href="#" id="NAmerica" ng-click="getNews('NAmerica')">US & Canada</a>
<p> {{message}} </p>
</body>
</html>
正如评论中已经提到的那样,现代浏览器不能简单地通过AJAX请求任意URL。 此限制完全是故意的,称为“ 同源策略” 。 默认情况下,浏览器只能向执行JavaScript的同一域执行AJAX请求。
通常,您可以采取一些选择。
当所请求的站点在其HTTP响应中包含跨域资源共享 (CORS)标头时,就允许跨域请求,该标头通常如下所示:
Access-Control-Allow-Origin: http://yoursite.com
当然,只有在您控制要向其请求内容的域时,这才是一种选择。 如果您要执行对第三方网站的请求,那么通常您自己无能为力。
顺便说一句,您还应该能够在浏览器控制台中看到相应的错误消息。
使用您的域名的服务器端脚本,例如使用PHP或[此处插入随机的服务器端脚本语言] 你的服务器,你然后通过Ajax请求对剧本要求外国内容。 这样,您可以解决“同源策略”,因为用户的浏览器现在可以在您自己的域上请求资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.