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({
....
})
这就是它失败的原因,因为无法更改回调方法名称。
我想使用 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({ .... })
这就是它失败的原因,因为无法更改回调方法名称。