javascript - Angular $http 和 Google Feed API

标签 javascript json angularjs rss-reader google-feed-api

我是一名初学者,“任务”是提取 RSS 提要以在 Angular/Ionic 项目中使用。我可以自己解析 RSS feed,也可以使用 Google Feed API 等外部工具。

我创建了一个服务来获取数据,然后由 Angular Controller 使用。

这是服务:

    .factory('rssReader', ['$http', function($http) {
  return $http.get('URL_HERE')
  .success(function(data) {
    alert("SUCCESS!!!" + data);//return data;
  })
  .error(function(data) {
    alert("FAILED!!!!" + data);//return data;
  });
}]);

使用此 CodeCademy URL 会发出“SUCCESS”警报并返回 JSON 数据:
http://s3.amazonaws.com/codecademy-content/courses/ltp4/events-api/events.json

但是,此 Google Feed API URL 返回 null。示例网址:
http://ajax.googleapis.com/ajax/services/feed/load?v=2.0&q=http://rss.cnn.com/rss/cnn_topstories.rss&num=5

我在网上看到过一些不同的例子,但我试图理解为什么这不起作用。

  1. 出了什么问题?
  2. 我可以使用哪些技巧/工具进行调试?

我是 Angular 和 JavaScript 的新手,非常感谢任何帮助。谢谢!

最佳答案

您的实现是正确的,(尽管看起来您正在调用 .success 函数,无论是在您的服务中还是在 Controller 中) - 但我认为真正的问题实际上在于您尝试调用的资源。

当我调用 s3.amazonaws feed 时,我得到了您所描述的数据,但是当调用 GoogleAPI 时,XMLHttpRequest 由于 CORS 而被阻止。您可以在这里阅读更多相关信息 CORS (Cross-Origin Resource Sharing) header.

避免这种情况的一种方法是从服务器端处理对 Google API 的请求,而不是直接在浏览器中处理。

希望这有帮助:)

关于javascript - Angular $http 和 Google Feed API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362501/

相关文章:

javascript - 比较一组对象中的对象

javascript - 如何验证输入框中输入的值只是数字?

javascript - 如何检测一个 JavaScript 文件只包含 JSON 数据,还是打算包含 JSON 数据?

javascript - 如何防止兄弟状态 Controller 刷新?

javascript - vue.js 组件没有显示?

javascript - 找出使用 Jquery 从网站获取网站名称的通用方法

.net - 使用 Newtonsoft.Json,如何将 JSON 反序列化为具有包含接口(interface)类型的 IEnumerable 属性的类型?

java - JAX-RS 2 打印 JSON 请求

javascript - 使用 Angular 的 UI-Router 的 URL 中的参数,.otherwise 的问题

c# - 方法 'ToString"没有重载在转换日期时采用 1 个参数