Вызов JSONP выполнен успешно, но получено сообщение об ошибке: внедренный сценарий JSONP не вызвал обратный вызов - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь вызвать JSONP для следующего API: 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.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Может быть, вам следует попробовать вызвать .map с оператором pipeable.

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

Также проверьте, что ответ JSON верен.

0 голосов
/ 28 октября 2018

Проблема связана с типом ответа.Его довольно чистый тип 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

...