Javascript 不是合法的JSONPAPI——如何在没有回调参数的情况下获取数据 Angular 1.6-JSONP抛出异常,尽管响应状态为:200 Ok for URL
我试图从JSONP端点获取一些数据。看起来响应中正在返回数据,但仍会抛出错误Javascript 不是合法的JSONPAPI——如何在没有回调参数的情况下获取数据 Angular 1.6-JSONP抛出异常,尽管响应状态为:200 Ok for URL,javascript,angularjs,json,jsonp,Javascript,Angularjs,Json,Jsonp,我试图从JSONP端点获取一些数据。看起来响应中正在返回数据,但仍会抛出错误 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
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 :.(
});
我收到以下错误:uncaughtreferenceerror:未定义作业
在作业api?作业=角度。回调。\u 0:1
其中jobs
指的是我的JSONP前缀
但是响应返回JSONP脚本:
为什么会引发此异常以及如何清除它?我使用的是Angular 1.6.0而不是合法的JSONP API
该URL上的API不是
它可以通过危险的服务获得:
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;
}
})
使用风险自负
角度模块(“应用程序”,[])
.服务(“危险API”,函数($q){
this.get=get;
函数get(funcName,url){
var dataDefer=$q.defer();
窗口[funcName]=函数(x){
dataDefer.resolve(x);
}
var tag=document.createElement(“脚本”);
tag.src=url;
document.getElementsByTagName(“head”)[0].appendChild(标记);
返回dataDefer.promise;
}
})
.run(函数($rootScope,dangerousAPI){
变量url=”https://careers.icims.com/jobs-api/";
dangerousAPI.get('jobs',url).then(函数(数据){
$rootScope.data=数据;
})
})
危险的API演示
{{data}json}
您没有名为作业的函数
——API总是返回调用名为作业
函数的JSONP,那么作业
不会在then()的范围内隐式定义吗?尽管如此,我将在什么范围内定义作业
。我试着在jsonp调用上面简单地定义函数jobs(){}
,但是不需要全局定义luckjobs。这很有效!非常感谢。如果您愿意纵容我的话,那么这个API不合法也不危险呢?标准JSONP接受一个回调参数来定义填充函数的名称。此示例代码通过浏览器和AngularJS安全措施传递URL卫生和其他机制,使JSONP调用更安全。有关详细信息,请参见。另请参见。另请参见。和。