この問題はAngular 2ではかなり一般的ですが、私の特定の状況に役立つものは何も見ていません。角2 Uncaught SyntaxError:予期しないトークン<
具体的には、結果が特にXML形式のAPI(APIキーが必要)からデータを取得するアプリを作成しています。私がしようとしているのは、ユーザーが検索パラメータを入力したときにAPIを呼び出し、APIに結果を返し、最終的に同じ画面に結果を表示させることです。
しかし、エラーの原因がAPI自体のURLにある「予期しないトークン<」というエラーが発生しています。私は、問題は私がJSONとして身体を返そうとしているという事実に由来していると私は疑うが、私はこの問題を経験したことがないので、コミュニティが助けてくれることを望んでいた!
ここに私のサービスと以下のコンポーネントのコードです:
検索bar.component.ts
import { Component, Output, Input, EventEmitter } from '@angular/core';
import { NgForm } from '@angular/forms';
import { NgModel } from '@angular/forms';
import { Observable } from 'rxjs/Observable';
import { Search } from './search';
import { ZillowSearchService } from './zillow-search.service';
@Component({
moduleId: module.id,
selector: 'search-bar',
templateUrl: `search-bar.component.html`,
styles: [
`input {
width: 50%;
margin-left: 25%;
margin-top: 15%;
color: black;
height: 40px;
}
button {
border-radius: 5px;
margin-top: 5%;
margin-left: 45%;
}
`
]
})
export class SearchBarComponent {
getSearchResults: string;
model = new Search("");
constructor(private zillowSearchService: ZillowSearchService) {}
private sub: any;
public state: string = "" ;
data: string;
onSubmit(){
this.zillowSearchService.searchZillow("New Mexico")
.subscribe(
data => console.log(data),
error => console.log("Error: " + error)
);
}
}
Zillowの-search.service.ts:
についてはimport { Inject, Injectable } from '@angular/core';
import { Http, Headers, Response, Jsonp } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import '../rxjs-operators';
import { AppConfig } from './app-config';
import { Search } from './search';
let api = AppConfig.baseUrls.api;
let url = AppConfig.baseUrls.base;
@Injectable()
export class ZillowSearchService {
public state: string;
constructor (@Inject(Jsonp) private jsonp: Jsonp) {
//this.http = http;
}
protected results: any;
searchZillow(statevar: any) {
console.log("Before" + statevar);
var queryString = url + `?zws-id=${api}&state=${statevar}&callback=JSONP_CALLBACK`;
return this.jsonp
.get(queryString, new Headers({ "Content-type":
"application/xml", "Accept": "application/xml",
"Access-Control-Allow-Origin": "*" }))
.map((res: Response) => res.json())
//.map(res => console.log("TEST"));
//.map((res) => {
//return
//});;
}
}
いくつかの追加の詳細は、コンソールとネットワークを見て、私は "タイプ"がscとして表示されていることがわかりますスクリプトとイニシエータはhttp.umd.jsで、BrowserJsonp.send(プロバイダーがコンテキストを手助けする場合)を指しています。
追加のコードスニペットを追加したい場合はお知らせください。本当に助けと指導に感謝します。あなたは結果を述べた
ありがとうございます!私はそれを試してみましょう。うん、私はこれが何らかの形で私の問題の根源になると思った。 XMLパーサーの推奨事項またはパーサー自体の実装方法 – durham989
残念ながら私はXMLサービングエンドポイントにまだ照会する必要はありませんでした。(XMLをjsonに変換するパッケージをnmapから取得し、代わりにマップで呼び出すことが最善の方法だと思います。 ) – chrispy
これが見つかりました、ショットの価値がある可能性があります:http://stackoverflow.com/questions/36368405/how-to-parse-xml-in-angular-2 – chrispy