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.jsonpCallbackParam
parámetro a través de , por defecto escallback
Nota: También debe asegurarse de que su URL se agregue a la lista blanca / confiable:
$sceDelegateProvider.resourceUrlWhitelist
o de confianza explícita a través de:
$sce.trustAsResourceUrl(url)
success/error
estaban en desuso .UTILIZAR:
Respuesta anterior: Angular 1.5.xy antes
Todo lo que debe hacer es cambiar
callback=jsonp_callback
a Mecallback=JSON_CALLBACK
gusta:Y luego su
.success
funció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
json
archivo 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_callback
sea 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
callback
los 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