script - jsonp angular 6
UnEdge ReferenceError:__ng_jsonp____req0_finished no está definido en (2)
Resolví este error desde la versión 2.3.1 de Angular. El error ocurre en la versión 2.4.X.
"@angular/common": "~2.3.1",
"@angular/compiler": "~2.3.1",
"@angular/core": "~2.3.1",
"@angular/forms": "~2.3.1",
"@angular/http": "~2.3.1",
"@angular/platform-browser": "~2.3.1",
"@angular/platform-browser-dynamic": "~2.3.1",
"@angular/router": "~3.3.1",
Tengo una aplicación angular y estoy usando JSONP también.
Este es mi servicio:
import { Injectable } from ''@angular/core'';
import { Http, Response, Headers, RequestOptions } from ''@angular/http'';
import { Observable } from ''rxjs/Observable'';
import { Page } from ''./page'';
import ''rxjs/add/operator/map'';
import ''rxjs/add/operator/catch'';
import { Jsonp } from ''@angular/http'';
@Injectable()
export class ProductService {
private urlPage = ''http://api.zanox.com/json/2011-03-01/products?q=iphone&connectid=XXXXXXXXXXXX&programs=12011&callback=JSONP_CALLBACK'';
constructor(private _jsonp: Jsonp) { }
getPage(): Observable<Page> {
return this._jsonp.get(this.urlPage).map(this.extractData).catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : ''Server error'';
console.error(errMsg);
return Observable.throw(errMsg);
}
}
Y obtengo este error:
Unbeught ReferenceError: __ng_jsonp____req0_finished no está definido en los productos? Q = iphone & connectid = XXXXXXXXXX & programs = 12011 & callback = __ ng_jsonp ____ req0_finished: 1
(anónimo) @ products? q = iphone & connectid = XXXXXXXXXXXX & programs = 12011 & callback = __ ng_jsonp ____ req0_ finished: 1 common.js: 143
Unkeught TypeError: no se puede leer la propiedad ''apply'' de null en globalOnerror (common.js: 143)
globalOnerror @ common.js: 143
productService.ts: 29 200 - Ok
¿Cómo resolver eso?
Aquí está mi solución:
set a variable:times
export class WikipediaService {
constructor(private jsonp: Jsonp) {
this.times=0;}
search (term: string) {
let wikiUrl = ''http://en.wikipedia.org/w/api.php'';
let params = new URLSearchParams();
params.set(''search'', term); // the user''s search value
params.set(''action'', ''opensearch'');
params.set(''format'', ''json'');
params.set(''callback'', `__ng_jsonp__.__req${this.times}.finished`);
this.times=this.times+1;
// TODO: Add error handling
return this.jsonp
.get(wikiUrl, { search: params })
.map(response => <string[]> response.json()[1]);
}
}