我正在使用离子3中的一个项目,我正在尝试使用php和mysql在我的应用程序中执行登录功能。但我从json对象读取数据时遇到问题来说明情况, 我有一个名为" user"在我的数据库中,我用php获取了所有记录,并将它们显示为json格式,如下所示:
sys.exit
我得到了这个结果:
<?php
header("Access-Control-Allow-Origin: *");
include ("cnx.php");
$query="select * from ionic_test ";
$result=$cnx->query($query);
$rs['user']=[];
while($record=$result->fetch(PDO::FETCH_ASSOC)){
$rs['user'][]=$record;
}
echo json_encode($rs);
所以,在我的离子项目中,我创建了一个服务,它将连接到php页面并从中获得上面显示的结果:
{"user":[{"user":"abdel","pwd":"abdel"}]}
现在,当我尝试读取httpClint请求返回的数据时,我遇到了问题,我实际上并不知道如何访问该数据,我已经尝试了很多方法来阅读它但没有主题适合我,我总是得到&#34; undefined&#34;结果:
@Injectable()
export class AuthProvider {
private url:string
constructor(public http: HttpClient) {
this.url='http://localhost/ionic%20login/api.php'
}
getusers(){
return this.http.get(this.url)
}
我想从json对象读取的数据是:
我希望这很清楚,足以说明我的问题,如果有人能帮助我解决这个问题,我将感激不尽。
使用ionic 3 php和mysql进行登录功能的任何建议或方法也很受欢迎。
答案 0 :(得分:1)
您可以告诉HttpClient
响应的类型,使输出更容易,更明显。
可以使用类型参数
来完成响应的类型检查 export interface Response {
user: string;
pwd: string;
}
Http
返回observable
我们可以告诉HttpClient.get
返回response
作为响应类型当我们使用http.get<Response[]>(...)
时,它会返回{的实例{1}}类型。
在您的服务中
Observable<Response[]>
在您的组件中订阅 import { Observable } from 'rxjs/Observable';
import {Response} from './responseModel'
@Injectable()
export class AuthProvider {
private url:string
constructor(public http: HttpClient) {
this.url='http://localhost/ionic%20login/api.php'
}
getusers()Observable<Response[]>{
return this.http.get<Response[]>(this.url)
}
以获取响应的实例
Observable<Response>