Ionic2 创建 PHP 以获取要在页面中显示的数据



我想知道如何创建PHP来获取显示主页的数据.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!";
}
?>

啊,我明白了。

在 php 中,您正在检索一个名为$postdata的值。所以我假设你想把用户名从你的ion2应用程序发送到你的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']

所以最终的排版看起来像这样(因为 php get request 返回了 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') 
); 
}

如果有人正在寻求详细的解释,为什么我们得出这个答案,请在下面的聊天中查看

您尚未在类中声明数据变量。

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

相关内容

  • 没有找到相关文章

最新更新