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