JSONP调用成功,但出现错误:JSONP注入脚本未调用回调

时间:2018-10-28 16:48:36

标签: angular jsonp angular7

我正在尝试对以下API进行JSONP调用:https://api.openrates.io/latest

我的服务代码:

this.http
    .jsonp<Response>("http://api.openrates.io/latest", "callback")
    .subscribe(res => console.warn(res));

从DevTools的“网络”选项卡中,我可以看到请求已成功,并且正在获取JSON对象:

enter image description here

但是我收到以下异常,并且我无法正确订阅响应:

enter image description here

我进行JSONP调用的方式是否有问题?还是服务器回答了问题(JSON而不是回调)? 为了完整起见,我使用Angular 7和Angular CLI。

3 个答案:

答案 0 :(得分:0)

  

问题属于响应类型。其非常纯的json类型,但是jsonp格式应类似于-

/**/ng_jsonp_callback_7({,…});
has_more: false
items: [{new_active_users: 9, total_users: 9580180, badges_per_minute: 5.37, total_badges: 28924187,…}]
quota_max: 300
quota_remaining: 298 
  

因此,可以使用jsonp方法来代替使用get

工作副本在https://stackblitz.com/edit/angular-http-jsonp-yd9z1r

答案 1 :(得分:0)

也许是,您应该尝试使用可管道运算符调用.map。

return this.http
    .jsonp<Response>("http://api.openrates.io/latest", "callback").pipe(
       map(res=>res),
       tap(res=>console.log(res))
    );

还要检查JSON响应是否有效。

答案 2 :(得分:0)

暂时,如果您只需要在本地测试您的 API 端点,您只需运行一个新的 Chrome 会话,在该会话中禁用网络安全。

你可以点击 Window + R 然后执行这个脚本。

chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security