Javascript — Ionic2 создать PHP, чтобы получить данные для показа на странице

Я хочу знать, как создать PHP, чтобы получить данные для шоу 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!";
}
?>

0

Решение

Ах я вижу.

В вашем php вы получаете значение с именем $postdata, Поэтому я предполагаю, что вы хотите отправить имя пользователя из вашего приложения ionic 2 в ваш php-файл.

2 варианта, вы должны попробовать их оба, потому что я не понимаю php, поэтому я не уверен, каково правильное решение.

Но я знаю, в чем проблема. Вы делаете http.get() позвоните, и вы передаете 2 аргумента в этом. link а также data, Метод GET предназначен для получения данных по вашей ссылке, а не для их предоставления. http.get принимает 2 параметра, urlв вашем случае по имени linkи HttpHeaders объект, так не данные.

Решение с параметром в http.get

Итак, как уже упоминалось выше, http.get() не могу отправить data, Если вы не добавите его в качестве параметра в свой URL. Тогда ваш машинописный текст будет выглядеть следующим образом (примечание: backticks вместо », упрощает конкатенацию строк):

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 вернул 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')
);
}

Если кто-то ищет подробное объяснение, почему мы пришли к этому ответу, посмотрите в чате ниже.

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
0

По вопросам рекламы [email protected]