Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不是合法的JSONPAPI——如何在没有回调参数的情况下获取数据 Angular 1.6-JSONP抛出异常,尽管响应状态为:200 Ok for URL_Javascript_Angularjs_Json_Jsonp - Fatal编程技术网

Javascript 不是合法的JSONPAPI——如何在没有回调参数的情况下获取数据 Angular 1.6-JSONP抛出异常,尽管响应状态为:200 Ok for URL

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

我试图从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 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调用更安全。有关详细信息,请参见。另请参见。另请参见。和。