AGGIORNAMENTO: da Angular 1.6
Non puoi più utilizzare la stringa JSON_CALLBACK come segnaposto per specificare dove deve essere posizionato il valore del parametro callback
Ora devi definire la richiamata in questo modo:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
Modifica / accedi / dichiara il parametro tramite $http.defaults.jsonpCallbackParam
, il valore predefinito ècallback
Nota: devi anche assicurarti che il tuo URL sia aggiunto alla lista attendibile / bianca:
$sceDelegateProvider.resourceUrlWhitelist
o esplicitamente attendibile tramite:
$sce.trustAsResourceUrl(url)
success/error
sono stati deprecati .
I $http
metodi legacy promise success
e error
sono stati deprecati e verranno rimossi nella v1.6.0. Usa invece il metodo standard then. Se $httpProvider.useLegacyPromiseExtensions
è impostato su, false
questi metodi verranno lanciati $http/legacy error
.
USO:
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);
});
Risposta precedente: Angular 1.5.xe precedenti
Tutto quello che dovresti fare è cambiare callback=jsonp_callback
in questo callback=JSON_CALLBACK
modo:
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
E poi la tua .success
funzione dovrebbe attivarsi come hai fatto se il ritorno ha avuto successo.
In questo modo eviti di dover sporcare lo spazio globale. Questo è documentato nella documentazione di AngularJS qui .
Aggiornato il violino di Matt Ball per utilizzare questo metodo: http://jsfiddle.net/subhaze/a4Rc2/114/
Esempio 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);
});