J'appelle l'API Web à partir de mon service de composant Angular2 dans Visual Studio, mais le message d'erreur "Jeton inattendu <dans JSON à la position 0 de JSON.parse ()" s'affiche continuellement.
ComponentService:
import { Injectable } from '@angular/core';
import {Http, Response } from '@angular/http';
import { IData } from '../Common/details';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
@Injectable()
export class AniversaryService {
constructor(private _http:Http) { }
getImages(): Observable<IData[]> {
return this._http.get("/api/ImageService/Details")
.map((response: Response) => <IData[]>response.json()
};
}
et le composant correspondant est:
import { Component, OnInit } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { IData } from '../Common/details';
import { AniversaryService } from './Aniversary.service';
@Component({
selector: 'my-AniversaryComponent',
providers: [AniversaryService]
})
export class AniversaryComponent implements OnInit {
data: IData[];
constructor(private _aniversaryservice: AniversaryService) { }
ngOnInit() {
this._aniversaryservice.getImages().subscribe((details) => this.data
=details);
}
}
}
Voici les images des en-têtes de réseau et ma réponse (la réponse est en Javascript):
Parfois, mon code de statut indique 200 ok et le type de contenu (dans les en-têtes de réponse): application/javascript
S'il vous plaît aidez-moi à résoudre ce problème.
Merci pour l'aide à l'avance
Les en-têtes ne sont pas utiles, les données le seraient. Mais le message d'erreur est clair: ce que vous pensez être censé être JSON commence par un "<" en tant que premier caractère et JSON ne commence jamais par un "<". Très probablement, vous recevez soit HTML ou XML.
-J'ai recréé mon service de composant
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/do';
import { IDetails } from '../share/Details';
@Injectable()
export class AniversaryService {
private url = 'http://localhost:60975/api/ImageService';
constructor(private _http: HttpClient) { }
getDetails(): Observable<IDetails[]> {
return this._http.get<IDetails[]>(this.url)
.do(data => console.log(JSON.stringify(data)))
.catch(this.handleError);
}
private handleError(err: HttpErrorResponse) {
console.log(err.message);
return Observable.throw(err.message);
}
}
maintenant, c'est accepter les données sans aucune erreur.