Я пытаюсь сделать вызов с использованием JSONP Угловое 2 и последовали все упомянутые в этом посте: How to make a simple JSONP asynchronous request in Angular 2?Угловое 2: запрос JSONP давая ИСКЛЮЧЕНИЕ: Ответ со статусом: 200 Ok для URL
Вот мои service.ts:
import { Injectable } from '@angular/core';
import { Http, Jsonp } from '@angular/http'
import 'rxjs';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class DataLoadService {
private quoteApiUrl: string;
constructor(private http: Http, private jsonp: Jsonp) {
this.quoteApiUrl = `http://api.forismatic.com/api/1.0/?method=getQuote&format=jsonp&jsonp=parseQuote&lang=en&callback=JSONP_CALLBACK`;
}
getQuotes(): Observable<any>{
return this.jsonp.get(this.quoteApiUrl)
.map(function(res){
return res.json() || {};
})
.catch(function(error: any){
return Observable.throw(error);
});
}
}
И это, как я называю мой getQuotes() метод из моих home.ts:
this.dataLoadService.getQuotes()
.subscribe(data => {
console.log(data);
this.quotes.push(data);
});
Этот вызов JSONP, я добавил: &callback=JSONP_CALLBACK
в конце моего API.
При вызове службы, я получаю правильный ответ JSON, как и в Инструменты разработчика> Network> вкладка Response Chrome:
parseQuote({"quoteText":"A failure is a man who has blundered but is not capable of cashing in on the experience. ", "quoteAuthor":"Elbert Hubbard", "senderName":"", "senderLink":"", "quoteLink":"http://forismatic.com/en/d74d7833cb/"})
Но я также получаю следующие ошибки:
- Uncaught ReferenceError : parseQuote не определен
- ИСКЛЮЧЕНИЕ: ответ со статусом: 200 Ok для URL: http://api.forismatic.com/api/1.0/?method=getQuote&format=jsonp&jsonp=parseQuote&lang=en&parseQuote=ng_jsonp.__req0.finished
Пожалуйста, сообщите. Я использую угловой v2.2.1.
Спасибо Обейд. Ваше предложение сработало. Могу ли я спросить, как вы узнали, что имя функции обратного вызова должно войти в параметр jsonp, а не параметр обратного вызова. Есть ли какая-то ошибка, которая говорит вам об этом. Если вы можете поделиться этим, это поможет мне в подобных сценариях в будущем. –