javascript - Not a Legal JSONP API -- 如何在没有 CALLBACK 参数的情况下获取数据

标签 javascript angularjs json jsonp

Angular 1.6 - 尽管响应状态为 200 Ok for 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 在 jobs-api?jobs=angular.callbacks._0:1 其中 jobs 指的是我的 JSONP 前缀

但响应返回 JSONP 脚本: enter image description here

为什么会抛出这个异常,如何清除?我在使用 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>

关于javascript - Not a Legal JSONP API -- 如何在没有 CALLBACK 参数的情况下获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44751852/

相关文章:

javascript - 为什么我收到错误 TypeError : "xyz" is not a function?

javascript - Nodejs Steam 交易机器人

javascript - 取消不会在 angularjs 中切换 ngHide

javascript - 使用 Protractor 从一个单页 Angular 应用程序导航到另一个 Angular 应用程序会给出 "javascript error: document unloaded while waiting for result"

javascript - 选择自动完成项目不起作用

javascript - Javascript 中的字符串到时间

javascript - 图像上的工具提示

javascript - Angular - 如何使用 $http 使用 HTTPS

php - 使用 json 和 php 进行谷歌地理编码

ios - 无法在 HOME.VC 文本标签中显示 JSON 结果