1

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

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

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
4

1 回答 1

3

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

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

我已经用另一个 URL 处理了这个问题

[更新]:apache 构建服务器似乎使用 Jenkins,它已从远程 API禁用 JSONP 。您可以通过尝试点击他们的jsonp 端点来验证这一点,该端点返回 403。您将不得不使用另一个端点,我无法看到这一点。

于 2013-10-10T01:11:51.543 回答