AKTUALIZACJA: od Angular 1.6
Nie możesz już używać ciągu JSON_CALLBACK jako symbolu zastępczego do określania, gdzie powinna znajdować się wartość parametru wywołania zwrotnego
Musisz teraz zdefiniować callback w następujący sposób:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
Zmień / uzyskaj / zadeklaruj parametr przez $http.defaults.jsonpCallbackParam, domyślniecallback
Uwaga: musisz również upewnić się, że Twój adres URL został dodany do zaufanej / białej listy:
$sceDelegateProvider.resourceUrlWhitelist
lub jawnie zaufane przez:
$sce.trustAsResourceUrl(url)
success/errorzostały wycofane .
Te $httpmetody obietnica starszych successi errorbyły przestarzałe i zostaną usunięte w v1.6.0. Zamiast tego użyj metody standard then. Jeśli $httpProvider.useLegacyPromiseExtensionsjest ustawiona na, falsete metody będą generować $http/legacy error.
POSŁUGIWAĆ SIĘ:
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);
});
Poprzednia odpowiedź: Angular 1.5.x i wcześniejsze
Wszystko, co powinieneś zrobić, to zmienić callback=jsonp_callbacksię callback=JSON_CALLBACKtak:
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
A potem twoja .successfunkcja powinna uruchomić się tak, jak ją masz, jeśli powrót się powiódł.
Robiąc to w ten sposób, nie musisz brudzić globalnej przestrzeni. Jest to udokumentowane w dokumentacji AngularJS tutaj .
Zaktualizowano skrzypce Matta Ball'a, aby używały tej metody: http://jsfiddle.net/subhaze/a4Rc2/114/
Pełny przykład:
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);
});