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

Angular 1.6 – JSONP lanza EXCEPCIÓN a pesar de Respuesta con estado: 200 Ok para URL

Estoy tratando de tomar algunos datos de un punto final JSONP. Parece que los datos se están devolviendo 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 :.( }); 

Me Uncaught ReferenceError: jobs is not defined at jobs-api?jobs=angular.callbacks._0:1 el siguiente error: Uncaught ReferenceError: jobs is not defined at jobs-api?jobs=angular.callbacks._0:1 donde jobs refiere a mi prefijo JSONP

Sin embargo, la respuesta devuelve el script JSONP: enter image description here

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

No es una API legal de JSONP

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; }) }) 
   

Dangerous API DEMO

{{data | json}}