ajax - angular 2 ajax调用出现错误 "EXCEPTION: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data"

标签 ajax angular

我正在使用 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/

相关文章:

javascript - 以 Express 方式将主干集合保存到 MongoDB

javascript - 需要在选中复选框后立即取消选中该复选框。 Angular 4

javascript - 如何以 Angular 制作日期输入掩码?

angular - Ng Zorro Ant Design 响应式(Reactive)表单多错误提示

php - 每页有多个表单的 jQuery forms.js

jquery - 使用 jQuery 检测 Enter 键被按下

jquery - 使用jquery ajax方法获取原始json字符串遇到问题

angular - 找不到模块 'C:\Users\username\project\node_modules\@angular\cli\bin\ng'

javascript - 使用 Angular 2 生成 html 标签

javascript - 如果没有剩余内容可加载,则隐藏加载更多内容