ОБНОВЛЕНИЕ: начиная с 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);
});