【问题标题】:Angular JSONP request角度 JSONP 请求
【发布时间】:2015-08-01 00:51:29
【问题描述】:

我正在尝试从 api 调用 api.brewerydb.com 获取 jsonp 响应。但是,它没有在回调函数中包装 json。这是我的代码:

app.factory('beer', ['$http',function($http){
  var url = "http://api.brewerydb.com/v2/beers?key=MYKEY&application/json&name=oberon&callback=JSON_CALLBACK";

  $http.jsonp(url)
    .success(function(data){
      return data;
    });
}]);

它正在返回 json 数据,但是我在一个名为我传递的 url 且包含 json 数据的文件中出现语法错误。

我发现 api 不支持 jsonp,这就是为什么这对我不起作用

【问题讨论】:

  • “我在一个文件名是我传递的 url 的文件中出现语法错误”是什么意思?
  • 嘿,我查看了 BreweryDB 的 api 文档并在下面发布了一个可能的解决方案。试一试——GL!

标签: json angularjs jsonp


【解决方案1】:
    1234563不需要。
  1. 根据他们的文档,默认返回类型是 JSON,因此如果不需要,则无需传递额外的参数。

  2. 根据他们的endpoint doc 尝试这个(对于端点/Beers):

var url = "@987654323@";

  1. 去给他们买啤酒!
    编辑:代码在这里:http://jsfiddle.net/r47y3mq3/1/ 复制/粘贴到您的本地开发环境并使用 Safari。

    使用 Chrome 会导致 Access-Control-Allow-Origin 标题问题,如下所述:access-control

【讨论】:

  • 我试过这个,它似乎没有改变任何东西。尽管其他 api 将 json 响应包装在一个名为 JSON_CALLBACK 的方法中,但我确实注意到了一些事情。像这个。 gdata.youtube.com/feeds/api/users/orbitalofficial/… 啤酒 api 虽然不这样做。这可能是他们的 api 不接受回调作为参数的问题吗?
  • 它在Safari 中使用 $http.get(url) 或 $http.jsonp(urlWithCallback) ..我将复制/粘贴我在本地开发环境中尝试过的代码.. ..so Chrome(和 jsfiddle.net)有一些访问控制问题,如下所述:access-control-allow-origin-header
  • 在我的回答中添加了指向 jsfiddle 的链接 .. GL!
【解决方案2】:

我遇到了一些类似的问题。您有 name=oberon 这是一家啤酒厂,但您正在您的网址中搜索啤酒。

如果你尝试过:

var url = "http://api.brewerydb.com/v2/breweries?key=MYKEY&application/json&name=oberon&callback=JSON_CALLBACK";

...您会得到一系列 Oberon 啤酒厂的所有啤酒。

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2013-12-07
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多