【问题标题】:Ionic2 angular2 http get json from external apiIonic2 angular2 http 从外部 api 获取 json
【发布时间】:2017-05-01 17:19:48
【问题描述】:

我知道这可能是一个菜鸟问题,因为我见过更复杂的东西,但要理解复杂的东西,我需要先理解简单的东西。

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

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

代码是用返回这个的路由创建的(在 laravel 中):

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

在 ionic 中我得到了这些文件:

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(例如添加名称或更改日期)。

【问题讨论】:

    标签: json angular laravel-5 ionic2


    【解决方案1】:

    假设某些东西运行 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());
      }
            }
        }
    

    【讨论】:

    • 非常感谢您的回复,我想我取得了一些进展,但现在我得到一个空白页。我改变了“this.data:any;”到“数据:任何;”。以及使用“this.getJson”将“OnInit”转换为“ngOnInit”。我暂时排除了帖子示例,因为它也给出了错误。我在 html 页面中添加了一些内容,但不会显示。
    • 我对 this.data 和 onInit 不好。我会纠正的。 Console.log 响应和数据....告诉我你得到了什么
    • 我假设您在示例中遗漏了 @Component 装饰器代码
    • 奇怪的是我没有从离子服务中得到错误。但是在 phpstorm 中,当我将“Page”悬停在该行中时,它会显示以下内容:“export class Page 实现 OnInit {”:来自接口 OnInit 的属性抽象未实现。如果这是一个问题,则无法找到解决方案。
    • 从'@angular/core'导入{组件,OnInit};从“@angular/http”导入 { Http };导入'rxjs/add/operator/map';
    猜你喜欢
    • 2017-05-23
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2017-09-09
    相关资源
    最近更新 更多