javascript angularjs json jsonp

javascript - No es una API JSONP legal: cómo obtener datos sin el parámetro CALLBACK



angularjs (1)

No es una API JSONP legal

La API en esa URL no es una API JSONP legal.

Se puede obtener con un servicio peligroso:

app.service("dangerousAPI", function($q) { this.get = get; function get(funcName, url) { var dataDefer = $q.defer(); window[funcName] = function(x) { dataDefer.resolve(x); } var tag = document.createElement("script"); tag.src = url; document.getElementsByTagName("head")[0].appendChild(tag); return dataDefer.promise; } })

Úselo bajo su propio riesgo.

La DEMO

angular.module("app",[]) .service("dangerousAPI", function($q) { this.get = get; function get(funcName, url) { var dataDefer = $q.defer(); window[funcName] = function(x) { dataDefer.resolve(x); } var tag = document.createElement("script"); tag.src = url; document.getElementsByTagName("head")[0].appendChild(tag); return dataDefer.promise; } }) .run(function($rootScope, dangerousAPI) { var url = "https://careers.icims.com/jobs-api/"; dangerousAPI.get(''jobs'',url).then(function(data) { $rootScope.data = data; }) })

<script src="//unpkg.com/angular/angular.js"></script> <body ng-app="app"> <h1>Dangerous API DEMO</h1> <pre>{{data | json}}</pre> </body>

Angular 1.6 - JSONP arroja EXCEPCIÓN a pesar de la respuesta con el estado: 200 Ok para URL

Estoy tratando de obtener algunos datos de un punto final JSONP. Parece que los datos se devuelven en la respuesta, pero Angular arroja un error.

var url = "https://careers.icims.com/jobs-api/" var trustedUrl = $sce.trustAsResourceUrl(url); $http.jsonp(trustedUrl, {jsonpCallbackParam: ''jobs''}).then(function(res){ console.log(res); // this is never executed :.( });

Recibo el siguiente error: Error de Uncaught ReferenceError: jobs is not defined at jobs-api?jobs=angular.callbacks._0:1 donde jobs hace referencia a mi prefijo JSONP

Sin embargo, la respuesta devuelve el script JSONP:

¿Por qué se lanza esta excepción y cómo se puede borrar? Estoy en Angular 1.6.0