JSONP call successful, but getting Error: JSONP injected script did not invoke callback
JSONP call successful, but getting Error: JSONP injected script did not invoke callback
我正在尝试对以下 API 进行 JSONP 调用:https://api.openrates.io/latest
我的服务代码:
this.http
.jsonp<Response>("http://api.openrates.io/latest", "callback")
.subscribe(res => console.warn(res));
从 DevTools 网络选项卡中我可以看到请求成功并且我得到了一个 JSON 对象:
但是我收到以下异常,无法正确订阅响应:
我拨打 JSONP 电话的方式有问题吗?还是服务器回答了问题(JSON 而不是回调)?
为了完整起见,我使用 Angular 7 和 Angular CLI。
Issue is with response type. Its pretty pure json type however jsonp
format should looks like -
/**/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
So instead of using jsonp
you can use get
method.
工作副本在这里https://stackblitz.com/edit/angular-http-jsonp-yd9z1r
可能是,您应该尝试使用管道运算符调用 .map。
return this.http
.jsonp<Response>("http://api.openrates.io/latest", "callback").pipe(
map(res=>res),
tap(res=>console.log(res))
);
还要检查 JSON 响应是否有效。
暂时,如果您只需要在本地测试您的 API 端点,您可以 运行 Chrome 禁用网络安全的新会话。
你可以点击 Window + R 然后执行这个脚本。
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
我正在尝试对以下 API 进行 JSONP 调用:https://api.openrates.io/latest
我的服务代码:
this.http
.jsonp<Response>("http://api.openrates.io/latest", "callback")
.subscribe(res => console.warn(res));
从 DevTools 网络选项卡中我可以看到请求成功并且我得到了一个 JSON 对象:
但是我收到以下异常,无法正确订阅响应:
我拨打 JSONP 电话的方式有问题吗?还是服务器回答了问题(JSON 而不是回调)? 为了完整起见,我使用 Angular 7 和 Angular CLI。
Issue is with response type. Its pretty pure json type however
jsonp
format should looks like -
/**/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
So instead of using
jsonp
you can useget
method.
工作副本在这里https://stackblitz.com/edit/angular-http-jsonp-yd9z1r
可能是,您应该尝试使用管道运算符调用 .map。
return this.http
.jsonp<Response>("http://api.openrates.io/latest", "callback").pipe(
map(res=>res),
tap(res=>console.log(res))
);
还要检查 JSON 响应是否有效。
暂时,如果您只需要在本地测试您的 API 端点,您可以 运行 Chrome 禁用网络安全的新会话。
你可以点击 Window + R 然后执行这个脚本。
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security