Angular $ http GET和jsonp

时间:2015-08-11 19:18:49

标签: json angularjs jsonp etsy

使用http和jsonp连接到Etsy API有很多困难。

网址在浏览器中正常运行: https://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK

但是使用$ http.get

给出了jsonp的404错误和0状态错误

我不相信它是CORS的一个问题,因为当我在CodePen上测试其他API时,它们可以工作。替换Etsy URL并没有运气。

做了一些更多的研究,发现Etsy不兼容CORS。有了这些知识,我该怎么办?

实施例: http://codepen.io/SitePoint/pen/YXXQxj?editors=101

我尝试了各种各样的解决方案,但这是我目前的代码:

var url = "https://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK";

$http.jsonp(url)               
            .success(function (data) {$scope.details = "Success";})
            .error(function (data, status) {$scope.details = "Nope"+""+status;});

1 个答案:

答案 0 :(得分:0)

我只看了你发布的链接,似乎Etsy支持jsonp。但你必须改变你打电话给api的方式。

而不是https://..../active?api_key= ...

您需要执行https://..../active.js?api_key=...&callback=etsyResult123

注意添加.js部分。

更准确地说,使用Angular的$http.jsonp api,它将是

var url = "https://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active.js?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK";

这是一个有效的plnkr:http://plnkr.co/edit/ulaMTo?p=preview