繁体   English   中英

Angular 4 - http.post 没有收到对象列表

[英]Angular 4 - http.post doesn't receive list of objects

我想发出一个http.post请求,以从 PHP 接收带有.subscribe的对象列表。

当我这样做时,我会收到类似包含我的对象的字符串的东西。 但是在*ngFor循环中,控制台告诉我该列表是一个undefined变量。 这是我的代码:

列表-master.ts

  /////
  objet01 = {ville: 'Bordeaux', prix: '69€'};
  objet02 = {ville: 'Lille', prix: '45€'};
  objs = [this.objet01, this.objet02];
  /////

  tempproj;


  constructor(public navCtrl: NavController, private navParams: NavParams, public http: Http) {

    this.http = http;

    this.getprojets();

  }

  getprojets() {
    var link = 'http://*****/getprojets.php';
    var myData = JSON.stringify({value: 'true'});

    this.http.post(link, myData)
    .subscribe(data => {
    this.tempproj = data["_body"]; 
    console.log('OKOK ' + this.tempproj + ' OKOK');
    }, error => {
    console.log("Oooops!");
    });

  }

这是getprojets.php

$postdata = file_get_contents("php://input");
    if (isset($postdata)) {
        $request = json_decode($postdata);
        $value = $request->value;

        if ($value === 'true' ) {
            $bdd = new PDO('***', '***', '***', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

            $query = $bdd->prepare("SELECT * FROM projetsapparts") or die('Login invalide');
            $query->execute();
            $liste = array();
            class projet1 {};


 while ($projet = $query->fetch()) {
            $projet1 = new projet1;
            $projet1->ville = $projet['ville'];
            $projet1->photo = $projet['photo'];
            $liste[] = $projet1;
        }
        echo json_encode($liste);
    }
}
else {
    echo 'Erreur postdata';
}

然后, list-master.html

  <ion-slides class="marketslide" autoplay="3000" loop="true">
    <ion-slide *ngFor="let appart of tempproj">
      <ion-card (tap)="showplvdetails()">
        <img src="{{appart.photo}}">
        <div class="card-title">{{appart.ville}}</div>
      </ion-card>
    </ion-slide>
  </ion-slides> 

在控制台中,var tempproj 包含 3 个条目,它看起来像一个对象列表:[{"ville":"Reims","photo":"http:******.jpg"},{"ville ":"Paris","photo":"http:******.jpg"},{"ville":"Amsterdam","photo":"http:******.jpg"} ]

但是,我有这个错误:

Cannot read property 'hasAttribute' of undefined

当在.html文件,我更换VAR tempproj由VAR objs (这是在的.ts文件中设置的,而不是从PHP来)在*ngFor ,一切工作正常。

为什么 PHP 中的对象列表未定义? *ngFor="let appart of tempproj"行,'appart' 可以是一个对象吗? 请帮助我,我只找到了 JavaScript 和 Angular 2 的解决方案。我已经使用了 5 天。

这里的问题是您的tempproj对象在您的模板呈现时未定义。

也许你可以尝试将它初始化为一个空数组,

let tempproj: Array<any> = [];

constructor(public navCtrl: NavController, private navParams: NavParams, public http: Http) {

    ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM