无法通过angularjs获取json响应

时间:2013-10-10 00:36:04

标签: json angularjs

需要从apache.org获取构建值。所以我正在使用他们的api 的 https://builds.apache.org/api/json

我尝试了angularjs $ http.jsonp,但无法获取数据。 在网络下的chrome控制台中,json api正在加载,但数据没有返回,而是将响应作为错误抛出。

app.controller("jsoncontroller",function($scope,$http){
   var url='https://builds.apache.org/api/json';
  $http.jsonp(url).success(function(data){
       console.log('success');
    })
    .error(function () {
      console.log('error')
    });
 });

将错误视为

Uncaught SyntaxError: Unexpected token : 
error

1 个答案:

答案 0 :(得分:3)

根据jsonp angular docs,您必须将JSON_CALLBACK附加到网址:https://builds.apache.org/api/json?jsonp=JSON_CALLBACK

但是,该URL不起作用,因为即使指定了回调参数,服务器仍然会发回内容类型的application / json,而不是预期的application / javascript。这导致它被json解析器(显然)解析,而不是JSONP工作所需的javascript回调。我在JSONP或Angular中不够精通,不知道这是谁的错。

我已经使用其他网址制作了fiddle

[更新]:apache构建服务器似乎使用Jenkins,它有来自远程API的disable JSONP。你可以尝试点击他们的jsonp endpoint来验证这一点,{{3}}返回403.你将不得不使用另一个端点,我无法看到它。