【问题标题】:Ionic2 create PHP to get data for show in pageIonic2 创建 PHP 以获取数据以在页面中显示
【发布时间】:2017-06-10 02:02:59
【问题描述】:

我想知道如何创建 PHP 来获取 show home.html 的数据

我得到`错误数据未定义

我不知道这对吗?请检查这个。我不知道要创建 PHP,我想设置 $path 来保留我的 URL。

<ion-content>
    <ion-list inset>
        <ion-item>
            <ion-label>Username</ion-label>
            <ion-input [(ngModel)]="data.username" type="text"></ion-input>
        </ion-item>
    </ion-list>
    <div padding>
        <button ion-button block (click)="getRepos()">Search</button>
    </div>
    <ion-card *ngFor="let repo of foundRepos" >
        <ion-card-header>
            {{ repo.data.name }}
        </ion-card-header>
        <ion-card-content>
            {{ repo.data.description }}
        </ion-card-content>
    </ion-card>
</ion-content>

.

import { Component } from "@angular/core";
import { NavController } from 'ionic-angular';
import { Http } from '@angular/http';

@Component({
    selector: 'page-home',
    templateUrl: 'home.html'
})
export class HomePage {
  public foundRepos;

  constructor(public http: Http) {
        this.data = {};   >>>>>>>data is not defined
        data.username = ''; >>>>>data is not defined
        this.http = http;
    }

   getRepos() {
        var link = 'http://localhost/github.php';
        var data = JSON.stringify({username: this.data.username}); <<<<this.data.username (data is not defined)

        this.http.get(link, data) <<<<data is not defined
        .subscribe(data => {
         this.foundRepos = data.json();
       },
        err => console.error(err),
        () => console.log('getRepos completed')
    );
  }

}

github.php

<?php


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

        if ($username != "") {
            $path = "https://api.github.com/users/".$username."/repos";
            echo $path ;
        }
        else {
            echo "Empty username parameter!";
        }
    }
    else {
        echo "Not called properly with username parameter!";
    }
?>

【问题讨论】:

  • @Ivaro18 请帮帮我。
  • 当你在我没有发布的评论中提到我时,我看不到它,只是偶然发现了这个哈哈。我没有使用php 的经验,您的打字稿代码还有问题吗? (顺便说一句,你没有property 'data' does not exist on type 'HomePage' 吗?)哦,没关系,看看下面的答案
  • @Ivaro18 我有几个问题要问你。我可以通过什么方式联系你??

标签: javascript php typescript ionic-framework ionic2


【解决方案1】:

啊,我明白了。

在您的 php 中,您正在检索一个名为 $postdata 的值。所以我假设您想将用户名从您的 ionic 2 应用程序发送到您的 php 文件。

2 个选项,你应该尝试它们,因为我不懂 php,所以我不确定正确的解决方案是什么。

但我确实知道问题出在哪里。您正在拨打 http.get() 电话,并且您在其中传递了 2 个参数。 linkdata。 GET 方法用于从您的链接中获取数据,而不是提供它。 http.get 有 2 个参数,url,在你的例子中名为 link,还有一个 HttpHeaders 对象,所以 不是 数据。

解决方案在http.get中带有参数

因此,如上所述,http.get() 无法发送您的data。除非您将其作为参数添加到您的 URL 中。然后你的打字稿看起来像这样(注意:反引号而不是'',使字符串连接更容易):

var link = `http://localhost/github.php?username=${this.data.username}`;
this.http.get(link).subscribe(data) { .... }

并在 php 中替换

$username = $response->username

$username = $_GET['username']

所以最终的 typscript 看起来像这样(由于 php get 请求返回 403,Github 可能不允许这样做)

getRepos() { 
  var link = `localhost/…${this.data.username}`; 

  this.http.get(link) 
    .subscribe(data => { 
      let repoUrl = data.text(); 

      this.http.get(repoUrl).subscribe(githubResponse => { 
        this.foundRepos = githubResponse.json(); 
      }); 
  }, 
  err => console.error(err), 
  () => console.log('getRepos completed') 
  ); 
}

如果有人想详细解释我们为何得出此答案,请查看下面的聊天记录

【讨论】:

  • 还是错误Unexpected token &lt; in JSON at position 0
  • 什么代码导致了这个错误?可能是 xml 响应
  • 你有时间吗?请和我一起进行teamviewer? T____T
  • 我现在在工作,不是teamviewer的最佳去处哈哈
  • 但是如果你创建(在你的订阅中)console.log("hi "+ data); 会打印一些东西吗?
【解决方案2】:

你没有在类中声明数据变量。

export class HomePage {
  public foundRepos;
  public data;//here
  constructor(public http: Http){
    this.data = {};
    this.data.username = '';//to refer to data in any function always use 'this'
  }
//other functions

【讨论】:

  • 谢谢,但仍然出现错误data.username = '';this.http.get(link, data)
  • 而 myphp 是真的吗?
  • 在打字稿中总是使用this 来指代类成员。否则打字稿编译器会抛出错误
  • 对于php,它并不是真正发送json数据..只是字符串
  • 哦,我该怎么办?请帮助我 T^T 我想在 myphp 的 url 中获取数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 2016-02-28
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多