我正在使用 angular2 创建应用程序,我需要从雅虎天气获取天气信息。我尝试使用 http get 方法来完成它,但它给我一个错误。
import {Component,OnInit,} from "angular2/core";
import {Http} from "angular2/http";
import 'rxjs/add/operator/map';
@Component({
templateUrl:'app/contact/contact.html',
})
export class ContactComponent{
constructor (private http: Http) {}
public url:string= "http://weather.yahooapis.com/forecastjson?w=2295424";
ngOnInit(url:string) {
return this.http.get(url).map(res => {
return res.json();
}).subscribe((response) => { console.log(response) });
}
}
我得到的错误是
EXCEPTION: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
谁能帮我解决这个问题?
最佳答案
您需要将 Accept header 附加到 get 请求,以便 Firefox 呈现返回的 json。我在搜索了很多之后发现了这个并遇到了这个 https://brockallen.com/2012/04/27/change-firefoxs-default-accept-header-to-prefer-json-over-xml/这让我走上了添加标题的道路
ngOnInit() {
let headers = new Headers();
headers.append('Accept', 'q=0.8;application/json;q=0.9');
return this.http.get(this.url, { headers: headers } ).map(res => {
return res.json();
}).subscribe((response) => { console.log(response) });
}
关于ajax - angular 2 ajax调用出现错误 "EXCEPTION: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35129078/