我已經看到,這個問題在Angular 2中相當常見,但我沒有看到任何有助於我特殊情況的東西。Angular 2 Uncaught語法錯誤:意外令牌<
具體來說,我創建了一個從API(需要API密鑰)提取數據的應用程序,其中結果是專門以XML格式顯示的。我想要做的是在用戶輸入搜索參數時調用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 ript,發起者是http.umd.js,它指向了BrowserJsonp.send(如果這有助於提供者任何上下文)。
讓我知道你是否希望我包含任何額外的代碼片段,我真的很感謝幫助和指導!
謝謝!讓我試試看。是的,我認爲這會以某種方式成爲我的問題的根源。任何有關XML解析器的建議或實現解析器本身的方法? – durham989
不幸的是,我不需要查詢XML服務端點:(我認爲最好的做法是從npm轉換xml到json,然後在你的映射中調用它: ) – chrispy
發現這個,可能值得一試:http://stackoverflow.com/questions/36368405/how-to-parse-xml-in-angular-2 – chrispy