我尝试使用jsonp的开发者页面中提供的语法,通过服务列出Etsy配置文件中的产品: https://www.etsy.com/developers/documentation/getting_started/jsonp
这是我的服务:
import { Injectable } from '@angular/core';
import { Jsonp } from '@angular/http';
import "rxjs/add/operator/first";
@Injectable()
export class EtsyService {
constructor(
private jsonp: Jsonp
) { }
listProducts(){
this.jsonp.get("https://openapi.etsy.com/v2/listings/513882265.js?callback=getData&api_key=YOURAPIKEY")
.first()
.subscribe(
(data) => {
console.log(data);
});
}
}
我收到两个错误:
未捕获的ReferenceError:未定义getData
和
错误响应{_body:" JSONP注入脚本未调用 回调。",状态:200,ok:true,statusText:" Ok",标题: 集管...}
答案 0 :(得分:1)
我自己找到了解决方案。您需要使用JSONP_CALLBACK作为url语法中的默认回调。 这将是服务的更正代码:
import { Injectable } from '@angular/core';
import { Jsonp } from '@angular/http';
import "rxjs/add/operator/map";
@Injectable()
export class EtsyService {
constructor(
private jsonp: Jsonp
) { }
listProducts(){
this.jsonp.request("https://openapi.etsy.com/v2/listings/513882265.js?callback=JSONP_CALLBACK&api_key=YOURAPIKEY", { method: 'Get' })
.map((data: any) => data.json())
.subscribe(
(data: any) => {
console.log(data);
}
)
}
}