Estou usando a $http.jsonp()
solicitação do angular que está retornando json embrulhado em uma função com sucesso:
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=jsonp_callback";
$http.jsonp(url).
success(function(data, status, headers, config) {
//what do I do here?
}).
error(function(data, status, headers, config) {
$scope.error = true;
});
Como acessar / analisar o JSON empacotado com função retornado?
javascript
angularjs
jsonp
akronymn
fonte
fonte
jsonp_callback
? Se não, aí está o seu problema.function jsonp_callback(data) { return data.found; //should be 3 }
Respostas:
ATUALIZAÇÃO: desde Angular 1.6
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 .USAR:
Resposta Anterior: Angular 1.5.x e antes
Tudo que você precisa fazer é mudar
callback=jsonp_callback
paracallback=JSON_CALLBACK
assim: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:
fonte
A COISA MAIS IMPORTANTE que eu não entendi por um bom tempo é que a solicitação DEVE conter "callback = JSON_CALLBACK", porque AngularJS modifica a url da solicitação , substituindo um identificador único por "JSON_CALLBACK". A resposta do servidor deve usar o valor do parâmetro 'callback' em vez do código permanente "JSON_CALLBACK":
Como estava escrevendo meu próprio script de servidor PHP, pensei que sabia o nome da função que ele queria e não precisava passar "callback = JSON_CALLBACK" na solicitação. Grande erro!
AngularJS substitui "JSON_CALLBACK" na solicitação por um nome de função exclusivo (como "callback = angular.callbacks._0"), e a resposta do servidor deve retornar esse valor:
fonte
json
arquivo estático embutido em código .Isso foi muito útil. Angular não funciona exatamente como JQuery. Ele tem seu próprio método jsonp (), que de fato requer "& callback = JSON_CALLBACK" no final da string de consulta. Aqui está um exemplo:
Então exiba ou manipule {{data}} em seu template Angular.
fonte
Isso deve funcionar bem para você, desde que a função
jsonp_callback
seja visível no escopo global:Demonstração completa: http://jsfiddle.net/mattball/a4Rc2/ (isenção de responsabilidade: nunca escrevi nenhum código AngularJS antes)
fonte
Você ainda precisa definir
callback
os parâmetros:Onde 'functionName' é uma referência stringificada para uma função definida globalmente. Você pode defini-lo fora de seu script angular e redefini-lo em seu módulo.
fonte
Para analisar, faça isso-
Ou você pode usar `$ scope.data = JSON.Stringify (data);
No modelo Angular, você pode usá-lo como
fonte
para mim, as soluções acima funcionaram apenas quando adicionei "format = jsonp" aos parâmetros de solicitação.
fonte
Estou usando o angular 1.6.4 e a resposta fornecida por subhaze não funcionou para mim. Eu modifiquei um pouco e funcionou - você tem que usar o valor retornado por $ sce.trustAsResourceUrl . Código completo:
fonte