2017-05-24 6 views
0

Ich versuche, Produkte von einem Etsy Profil über einen Dienst zur Liste, für JSONP die bereitgestellte Syntax in der Entwickler-Seite mit: https://www.etsy.com/developers/documentation/getting_started/jsonpJSONP auf Etsy nennt

Das ist mein Dienst ist:

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); 
     }); 
    } 

} 

ich zwei Fehler:

Uncaught ReferenceError: getData is not defined

und

ERROR Response {_body: "JSONP injected script did not invoke callback.", status: 200, ok: true, statusText: "Ok", headers: Headers…}

Antwort

1

Ich fand die Lösung alleine. Sie müssen JSONP_CALLBACK als Standard-Callback in der URL-Syntax verwenden. Dies wäre der korrigierte Code für den Dienst:

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); 
     } 
    ) 
    } 

}