ATUALIZAÇÃO: desde Angular 1.6
Você não pode mais usar a string JSON_CALLBACK como um espaço reservado para especificar onde o valor do parâmetro de retorno de chamada deve ir
Agora você deve definir o retorno de chamada assim:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
Alterar / acessar / declarar parâmetro via $http.defaults.jsonpCallbackParam
, o padrão écallback
Observação: você também deve certificar-se de que seu URL seja adicionado à lista de permissões / confiáveis:
$sceDelegateProvider.resourceUrlWhitelist
ou explicitamente confiável via:
$sce.trustAsResourceUrl(url)
success/error
foram descontinuados .
Os $http
métodos promessa legados success
e error
tem sido substituído e será removido em v1.6.0. Use o método padrão then. Se $httpProvider.useLegacyPromiseExtensions
for definido como false
, esses métodos irão lançar $http/legacy error
.
USAR:
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);
});
Resposta Anterior: Angular 1.5.x e antes
Tudo que você precisa fazer é mudar callback=jsonp_callback
para callback=JSON_CALLBACK
assim:
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
E então sua .success
função deve disparar como você fez se o retorno foi bem-sucedido.
Fazer isso dessa forma evita que você tenha que sujar o espaço global. Isso está documentado na documentação do AngularJS aqui .
Atualizou o violino de Matt Ball para usar este método: http://jsfiddle.net/subhaze/a4Rc2/114/
Exemplo completo:
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);
});