Ionic2 angular2 http从外部api获取json

时间:2016-12-16 00:15:56

标签: json angular laravel-5 ionic2

我知道这可能是一个noob问题,因为我看到了更复杂的东西,但要理解复杂的我需要先理解这些简单的东西。

我试图从api(laravel)的JSON字符串中获取名称:

{"name":"Abigail","state":"CA"}

使用返回此代码的路径创建代码(在laravel中):

return response()->json([
    'name' => 'Abigail',
    'state' => 'CA'
]);

在离子中我得到了这些文件:

page.ts:

export class Page {
  constructor(public http: Http) {}
    getJson() {
      this.http.get('http://external.ip/api')
          .map(res => res.json())
          .subscribe(
          data => this.data = data
      );
    }
}

page.html中:

<ion-header>
  <ion-navbar>
    <ion-title>App</ion-title>
  </ion-navbar>
</ion-header>
<ion-content padding>
  <ion-content>
    <ion-list>
      <ion-item>
        <h3>{{data.name}}<h3>
      </ion-item>
    </ion-list>
  </ion-content>
</ion-content>

我知道这不起作用,但我需要帮助才能使其正常工作。 我希望以后能够添加更多名称。 之后我希望能够将数据发布到api(例如添加名称或更改日期)。

1 个答案:

答案 0 :(得分:3)

这应该可以正常运行getJson()(我添加了OnInit代码来实现)。给你一个简单的帖子请求的快速例子。您可以订阅该帖子或保留原样。

//Will need on OnInit to run getJson()
    import {Component, OnInit} from '@angular/core';


 export class Page implements OnInit {

  constructor(public http: Http) {}

data: any;

    getJson() {
      this.http.get('http://external.ip/api')
          .map(res => res.json())
          .subscribe(
          data => this.data = data;
      );
    }
//run getJson() at initial load
ngOnInit() {
 this.getJson();
}
     postJson(data:any) {
    let headers = new Headers({ 'Content-Type': 'application/json'});
    let options = new RequestOptions({ headers: headers });
    return this.http.post('http://52.11.14.57:4000/api/events', JSON.stringify(data), options)
      .map((res: Response) => res.json());
  }
        }
    }