更新:自 Angular 1.6 起
不能再使用JSON_CALLBACK字符串作为占位符来指定回调参数值应位于何处
现在,您必须像这样定义回调:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
通过 更改/访问/声明参数,默认为$http.defaults.jsonpCallbackParam
callback
注意:您还必须确保您的网址已添加到受信任/白名单中:
$sceDelegateProvider.resourceUrlWhitelist
或通过以下方式明确信任:
$sce.trustAsResourceUrl(url)
已成功/错误
已弃用。
旧版 promise 方法已被弃用,并将在 v1.6.0 中删除。请改用标准然后方法。如果设置为 ,则这些方法将抛出 .$http
success
error
$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文档中。
更新了Matt Ball的小提琴以使用此方法:http://jsfiddle.net/subhaze/a4Rc2/114/
完整示例:
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);
});