Angular 4 的 JSONP 回调问题

JSONP callback issue with Angular 4

我想使用 flickr Jsonp 和 Angular 4 来检索图像。

它给我以下错误:-

VM637 global-functions.helpers.ts!transpiled:12 Response {_body: "JSONP injected script did not invoke callback.", status: 200, ok: true, statusText: "Ok", headers: Headers…}

请在这里找到问题的解决方案:-

https://plnkr.co/edit/oySgh2weZMOJddYA44Rp?p=preview

这是导致问题的接缝代码:-

this.jsonp.request(`https://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=&callback=JSONP_CALLBACK`).

      subscribe(images => {


      },
      (error) => {
        console.error(error);
      }

根据我自己的分析,这就是它不起作用的原因:-

callback=JSONP_CALLBACK一般是把调用的Jsonp的回调函数名改成和我在参数里给它的回调一样。\

例如:

https://itunes.apple.com/search?term=ff&media=music&limit=20&callback=JSONP_CALLBACK

将 return 一个 json 类似的响应:-

JSONP_CALLBACK ({ .... })

如果我提供 url 类似于:

https://itunes.apple.com/search?term=ff&media=music&limit=20&callback=sun

将 return 响应类似于:-

太阳({ .... })

等等。

当Angular看到类似这样的调用时:https://itunes.apple.com/search?term=ff&media=music&limit=20&callback=JSONP_CALLBACK

它将呼叫转移到:

ng_jsonp.__req0.finished( { ... })

并等待此回调函数拦截响应。

但是,问题是public闪烁api,url是不可定制的:-

当我发送 url 类似于:https://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=&callback=JSONP_CALLBACK

响应总是以:-

开头

jsonFlickrFeed({ .... })

这就是它失败的原因,因为无法更改回调方法名称。