Estoy usando la $http.jsonp()solicitud de angular que devuelve json correctamente envuelto en una función:
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;
});
¿Cómo acceder / analizar la función devuelta-envuelto-JSON?
javascript
angularjs
jsonp
Akronymn
fuente
fuente

jsonp_callback? Si no, ese es tu problema.function jsonp_callback(data) { return data.found; //should be 3 }Respuestas:
ACTUALIZACIÓN: desde Angular 1.6
Ahora debe definir la devolución de llamada así:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})Cambiar / acceder / declarar
$http.defaults.jsonpCallbackParamparámetro a través de , por defecto escallbackNota: También debe asegurarse de que su URL se agregue a la lista blanca / confiable:
$sceDelegateProvider.resourceUrlWhitelisto de confianza explícita a través de:
$sce.trustAsResourceUrl(url)success/errorestaban en desuso .UTILIZAR:
Respuesta anterior: Angular 1.5.xy antes
Todo lo que debe hacer es cambiar
callback=jsonp_callbacka Mecallback=JSON_CALLBACKgusta:Y luego su
.successfunción debería dispararse como lo hizo si el retorno fue exitoso.Hacerlo de esta manera evita que tengas que ensuciar el espacio global. Esto está documentado en la documentación de AngularJS aquí .
Se actualizó el violín de Matt Ball para usar este método: http://jsfiddle.net/subhaze/a4Rc2/114/
Ejemplo completo:
fuente
Lo MÁS IMPORTANTE que no entendí por un tiempo es que la solicitud DEBE contener "callback = JSON_CALLBACK", porque AngularJS modifica la URL de la solicitud , sustituyendo un identificador único por "JSON_CALLBACK". La respuesta del servidor debe usar el valor del parámetro 'callback' en lugar de la codificación "JSON_CALLBACK":
Como estaba escribiendo mi propio script de servidor PHP, pensé que sabía qué nombre de función quería y no necesitaba pasar "callback = JSON_CALLBACK" en la solicitud. ¡Gran error!
AngularJS reemplaza "JSON_CALLBACK" en la solicitud con un nombre de función único (como "callback = angular.callbacks._0"), y la respuesta del servidor debe devolver ese valor:
fuente
jsonarchivo estático codificado ?Esto fue muy útil. Angular no funciona exactamente como JQuery. Tiene su propio método jsonp (), que de hecho requiere "& callback = JSON_CALLBACK" al final de la cadena de consulta. He aquí un ejemplo:
Luego muestre o manipule {{data}} en su plantilla Angular.
fuente
Esto debería funcionar bien para usted, siempre que la función
jsonp_callbacksea visible en el alcance global:Demostración completa: http://jsfiddle.net/mattball/a4Rc2/ (descargo de responsabilidad: nunca antes había escrito ningún código AngularJS)
fuente
Todavía necesitas configurar
callbacklos parámetros:Donde 'functionName' es una referencia en cadena a una función definida globalmente. Puede definirlo fuera de su script angular y luego redefinirlo en su módulo.
fuente
Para analizar haz esto-
O puede usar `$ scope.data = JSON.Stringify (data);
En la plantilla angular puedes usarla como
fuente
para mí, las soluciones anteriores funcionaron solo una vez que agregué "format = jsonp" a los parámetros de solicitud.
fuente
Estoy usando angular 1.6.4 y la respuesta proporcionada por subhaze no funcionó para mí. Lo modifiqué un poco y luego funcionó: debe usar el valor devuelto por $ sce.trustAsResourceUrl . Código completo:
fuente