Não é uma API JSONP legal – Como obter dados sem o parâmetro CALLBACK

Angular 1.6 – JSONP lança EXCEPTION apesar da Resposta com status: 200 Ok para URL

Estou tentando pegar alguns dados de um ponto de extremidade JSONP. Parece que os dados estão sendo retornados na resposta, mas Angular, no entanto, lança um erro.

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 :.( }); 

Estou recebendo o seguinte erro: Uncaught ReferenceError: jobs is not defined at jobs-api?jobs=angular.callbacks._0:1 que jobs se refere ao prefixo JSONP

No entanto, a resposta retorna o script JSONP: insira a descrição da imagem aqui

Por que esta exceção está sendo lançada e como ela pode ser apagada? Eu estou no Angular 1.6.0

Não é uma API JSONP legal

A API nesse URL não é uma API JSONP legal.

Pode ser obtido com um serviço perigoso:

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

Use por sua conta e risco.

O 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}}