ОБНОВЛЕНИЕ: начиная с Angular 1.6
Вы больше не можете использовать строку JSON_CALLBACK в качестве заполнителя для указания, куда должно идти значение параметра обратного вызова
Теперь вы должны определить обратный вызов следующим образом:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
Изменить / получить доступ / объявить параметр через $http.defaults.jsonpCallbackParam, по умолчаниюcallback
Примечание. Вы также должны убедиться, что ваш URL-адрес добавлен в надежный / белый список:
$sceDelegateProvider.resourceUrlWhitelist
или явно доверенный через:
$sce.trustAsResourceUrl(url)
success/errorбыли устаревшими .
Эти $httpметоды обещают устаревшие successи errorустарели и будут удалены в v1.6.0. Вместо этого используйте стандартный метод then. Если $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 здесь .
Обновлена скрипка Мэтта Болла для использования этого метода: 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);
});