【问题标题】:Parsing $ from JSON resp in AngularJS?在AngularJS中从JSON resp解析$?
【发布时间】:2013-07-05 02:42:58
【问题描述】:

如何从 AngularJS 中的 JSON HTTP 响应解析 $

试图在没有 JQuery 的情况下抓取 YouTube 搜索结果:

$http.get('http://gdata.youtube.com/feeds/api/videos/-/chocolate?alt=json&orderby=published')
    .success(function (data) {
         $scope.video_list = data;
    })
    .error(function (data) {
         $scope.video_list = data;
});

那个没有错误响应,安慰它的时候得到一个Object;但不能在里面查询。

$scope.video_list_fun = function () {
    $http.get('http://gdata.youtube.com/feeds/api/videos/-/chocolate?alt=json&orderby=published').then(function (response) {
          $scope.video_list = response.data;
    });
};

这里也一样,也尝试过使用, 链接else

$scope.video_list = (httpGet('http://gdata.youtube.com/feeds/api/videos/-/chocolate?alt=json&orderby=published'
                     )); // HttpGet from http://stackoverflow.com/a/4033310/587021

这可行,但是当我解析它时,例如:JSON.parse; AngularJS 去掉了所有带有$ 的键。


请注意,我曾尝试使用 their other API,但无法获得相同的结果(并且无法包含它们对发布日期和质量有用的参数;因为它已损坏)。

【问题讨论】:

标签: javascript json angularjs youtube-api angularjs-service


【解决方案1】:

看起来像是跨域限制。看看使用$http.jsonp 是否适合你。

查看 YouTube 文档中的 "Using the Data API with JavaScript",其中指出您需要使用 alt=json-in-script 以及 callback 参数。

所以不要访问:

$http.get('http://gdata.youtube.com/feeds/api/videos/-/chocolate?alt=json&orderby=published')

您将访问:

 $http.jsonp('http://gdata.youtube.com/feeds/api/videos/-/chocolate?alt=json-in-script&orderby=published&callback=JSON_CALLBACK')

注意区别:

  1. 使用jsonp 代替get
  2. 使用alt=json-in-script 而不是alt=json(请注意,这可能因 API 文档而异)
  3. 添加 callback=JSON_CALLBACK(请注意,这可能因 API 文档而异,但 AngularJS 会在响应中查找 JSON_CALLBACK

Check out this fiddle查看工作版本(与this fiddle基于原始代码比较)。

还可以查看this wiki 文章了解有关 JSONP 的更多信息。

【讨论】:

  • 嗯,在使用 success 承诺语法之前,我曾尝试使用 jsonp;没有尝试 then 或 JSON_CALLBACK 语法,所以谢谢:D
  • 我已经尝试了这两种语法(使用完全相同的代码;char 为 char),但似乎都不适合我。我已经从 localhost 和我的 heroku 应用程序上尝试过。
  • 你想对数据做什么?我修改了第一个小提琴here 以显示一些视频标题,它对你有用吗?
猜你喜欢
  • 1970-01-01
  • 2018-10-19
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多