【发布时间】:2018-05-17 19:21:04
【问题描述】:
// 随讨论更新
我尝试通过 http 请求获取 JSON 对象(任务)并将它们解析到我自己的类中以在我的 HTML 页面上显示它们(任务概述)。
这是我得到的:
这是我的 php 返回的 json 数组:
{"result":[{"id":"3","znumber":"vor21423"},{"id":"2","znumber":"vor213"}]}
这是我对 angular.io 教程的最后一次尝试。我已经测试了很多答案,但其中大多数都与 .json() 相关,它不再是 HTML 客户端的一部分。
export class ApiComponent {
private apiUrl = 'http://localhost:81/work/get.php';
results: Steve[];
constructor(private http: HttpClient) {
}
ngOnInit() {
this.getSteves();
}
getSteves() {
this.http.get<ItemsResponse>(this.apiUrl)
.subscribe(data => {
this.results = data.result
.map(steve => new Steve(steve.id, steve.zNumber));
console.log(this.results);
console.log(data);
});
}
}
界面
import { Steve } from './Steve';
export interface ItemsResponse {
results: Steve[];
}
HTML
<div>
<div *ngFor="let steve of results">
<p> - {{steve.id}}</p>
<p> - {{steve.zNumber}}</p>
</div>
</div>
史蒂夫班
export class Steve {
public id = 0;
public zNumber = '';
constructor(id: number, zNumber: string) {
this.id = id;
this.zNumber = zNumber;
}
}
API
<?php
require_once('db.php');
$sql = 'SELECT * FROM jobs ORDER BY id DESC';
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$data = array();
while($row = $result->fetch_assoc()){
$data[] = $row;
}
echo json_encode(array('result' => $data));
} else {
echo 0;
}
?>
【问题讨论】:
-
在调试时尝试检查
data对象我相信你应该使用result而不是results。 -
我认为 results 只是 json 数组的标识符。 // 'steves' 现在
-
results是一个变量,因此可以随意命名。约定是使用单数,所以result。看起来来自服务器的data对象没有steves属性。
标签: php html angular typescript angular5