自Angular 1.6您不能再使用JSON_CALLBACK字符串作为占位符来指定回调参数值应该去的位置
您现在必须定义回调,如下所示:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
更改/访问/声明参数通过$http.defaults.jsonpCallbackParam,默认为callback
注意:您还必须确保将您的网址添加到可信/白名单中:
$sceDelegateProvider.resourceUrlWhitelist
或明确信任通过:
$sce.trustAsResourceUrl(url)
success/error被弃用了。在$http传统方法的承诺success,并error已被弃用,并将在V1.6.0被删除。请改用标准方法。如果$httpProvider.useLegacyPromiseExtensions设置为false那么这些方法将抛出$http/legacy error。
使用:var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts"var trustedUrl = $sce.trustAsResourceUrl(url);$http.jsonp(trustedUrl, {jsonpCallbackParam: 'callback'})
.then(function(data){
console.log(data.found);
});
上一个答案:Angular 1.5.x及之前
所有你应该做的是更换callback=jsonp_callback到callback=JSON_CALLBACK像这样:var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
.success如果返回成功,那么你的函数应该就像你拥有它一样。
这样做可以避免弄脏全局空间。这是AngularJS文档中记录在这里。
完整示例:var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";$http.jsonp(url)
.success(function(data){
console.log(data.found);
});