Not a Legal JSONP API -- 如何在没有 CALLBACK 参数的情况下获取数据
Not a Legal JSONP API -- How to get data without CALLBACK parameter
Angular 1.6 - 尽管响应状态为 200 Ok URL
,但 JSONP 抛出异常
我正在尝试从 JSONP 端点获取一些数据。看起来数据正在响应中返回,但 Angular 仍然会引发错误。
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 :.(
});
我收到以下错误:Uncaught ReferenceError: jobs is not defined
at jobs-api?jobs=angular.callbacks._0:1
其中 jobs
指的是我的 JSONP 前缀
尚未响应 returns JSONP 脚本:
为什么会抛出这个异常,如何清除?我在 Angular 1.6.0
不是合法的 JSONP API
URL 处的 API 不是 legal JSONP 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;
}
})
使用风险自负。
The 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 - 尽管响应状态为 200 Ok URL
,但 JSONP 抛出异常我正在尝试从 JSONP 端点获取一些数据。看起来数据正在响应中返回,但 Angular 仍然会引发错误。
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 :.(
});
我收到以下错误:Uncaught ReferenceError: jobs is not defined
at jobs-api?jobs=angular.callbacks._0:1
其中 jobs
指的是我的 JSONP 前缀
尚未响应 returns JSONP 脚本:
为什么会抛出这个异常,如何清除?我在 Angular 1.6.0
不是合法的 JSONP API
URL 处的 API 不是 legal JSONP 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;
}
})
使用风险自负。
The 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>