[英]Unable to fetch JSON Data using PHP & Angular JS
我正在傳遞 ID 以使用 Angular JS 獲取 JSON 編碼數據。
這是我的控制器:
dhmsApp.controller('dhmsDetailsView',function($scope,$http, $routeParams){
$http.get("include/detailViewBg.php", {params: {id: $routeParams.id}})
.success(function (response) {$scope.details = response});
});
這是我的 PHP SELECT 查詢代碼 (detailViewBg.php),從中對 JSON 進行編碼
<?php
include("../include/connection_string.php");
$id = $_GET['id'];
$sql = mysqli_query($db, "SELECT * FROM dhms_requirement where id='".$id."'");
if(mysqli_num_rows($sql)){
$data = array();
while($row = mysqli_fetch_array($sql)){
$data[] = array(
'id' => $row['id'],
'rClientName' => $row['rClientName'],
'rContactNumber' => $row['rContactNumber'],
'rCompanyName' => $row['rCompanyName'],
'rEmail' => $row['rEmail'],
'rRequirement' => $row['rRequirement'],
);
}
header('Content-type: application/json');
echo json_encode($data);
}
$sqlDomain = mysqli_query($db, "SELECT * FROM dhms_domain_details where id='".$id."'");
if(mysqli_num_rows($sqlDomain)){
$dataDomain = array();
while($rowDomain = mysqli_fetch_array($sqlDomain)){
$dataDomain[] = array(
'id' => $rowDomain['id'],
'dSelectDomain' => $rowDomain['dSelectDomain'],
'dDomainName' => $rowDomain['dDomainName'],
'dRegisterDomainFrom' => $rowDomain['dRegisterDomainFrom'],
'dStartDate' => $rowDomain['dStartDate'],
'dEndDate' => $rowDomain['dEndDate'],
'dRegistrationFor' => $rowDomain['dRegistrationFor'],
);
}
header('Content-type: application/json');
echo json_encode($dataDomain);
}
?>
這是我獲取數據的 HTML 頁面
<div class="panel-body" ng-repeat="u in details track by $index">
<div class="col-lg-6">
<ul class="list-group">
<li class="list-group-item"><strong>Req. NO.</strong> : {{u.id}}</li>
<li class="list-group-item"><strong>Contact Number</strong> : {{u.rContactNumber}}</li>
<li class="list-group-item"><strong>Email Address</strong> : {{u.rEmail}}</li>
</ul>
</div>
<div class="col-lg-6">
<ul class="list-group">
<li class="list-group-item"><strong>Client Name</strong> : {{u.rClientName}}</li>
<li class="list-group-item"><strong>Compnay Name</strong> : {{u.rCompanyName}}</li>
<li class="list-group-item"><strong>Requirement</strong> : {{u.rRequirement}}</li>
</ul>
</div>
</div>
<div class="panel-body" ng-repeat="u in details track by $index">
<div class="col-lg-6">
<ul class="list-group">
<li class="list-group-item"><strong>Req. NO.</strong> : {{u.dSelectDomain}}</li>
<li class="list-group-item"><strong>dDomainName</strong> : {{u.dDomainName}}</li>
<li class="list-group-item"><strong>dRegisterDomainFrom</strong> : {{u.dRegisterDomainFrom}}</li>
</ul>
</div>
<div class="col-lg-6">
<ul class="list-group">
<li class="list-group-item"><strong>dStartDate</strong> : {{u.dStartDate}}</li>
<li class="list-group-item"><strong>dEndDate</strong> : {{u.dEndDate}}</li>
<li class="list-group-item"><strong>dRegistrationFor</strong> : {{u.dRegistrationFor}}</li>
</ul>
</div>
</div>
您確實回顯了 json 數據兩次,因此您的響應數據是無效的 json。
<?php
include("../include/connection_string.php");
$id = $_GET['id'];
$result = [];
$sql = mysqli_query($db, "SELECT * FROM dhms_requirement where id='".$id."'");
if(mysqli_num_rows($sql)){
$data = array();
while($row = mysqli_fetch_array($sql)){
$data[] = array(
'id' => $row['id'],
'rClientName' => $row['rClientName'],
'rContactNumber' => $row['rContactNumber'],
'rCompanyName' => $row['rCompanyName'],
'rEmail' => $row['rEmail'],
'rRequirement' => $row['rRequirement'],
);
}
//header('Content-type: application/json');
//echo json_encode($data);
//Instead of echo data here, just put it into $result array
$result['requirement_detail'] = $data;
}
$sqlDomain = mysqli_query($db, "SELECT * FROM dhms_domain_details where id='".$id."'");
if(mysqli_num_rows($sqlDomain)){
$dataDomain = array();
while($rowDomain = mysqli_fetch_array($sqlDomain)){
$dataDomain[] = array(
'id' => $rowDomain['id'],
'dSelectDomain' => $rowDomain['dSelectDomain'],
'dDomainName' => $rowDomain['dDomainName'],
'dRegisterDomainFrom' => $rowDomain['dRegisterDomainFrom'],
'dStartDate' => $rowDomain['dStartDate'],
'dEndDate' => $rowDomain['dEndDate'],
'dRegistrationFor' => $rowDomain['dRegistrationFor'],
);
}
//header('Content-type: application/json');
//echo json_encode($dataDomain);
//Put this $dataDomain into $result array also.
$result['domain_data'] = $dataDomain;
}
//Echo json data finally.
header('Content-type: application/json');
echo json_encode($result);
?>
並更新您的 html 部分
<!--<div class="panel-body" ng-repeat="u in details track by $index">-->
<!-- Careful the details.requirement_detail -->
<div class="panel-body" ng-repeat="u in details.requirement_detail track by $index">
<div class="col-lg-6">
<ul class="list-group">
<li class="list-group-item"><strong>Req. NO.</strong> : {{u.id}}</li>
<li class="list-group-item"><strong>Contact Number</strong> : {{u.rContactNumber}}</li>
<li class="list-group-item"><strong>Email Address</strong> : {{u.rEmail}}</li>
</ul>
</div>
<div class="col-lg-6">
<ul class="list-group">
<li class="list-group-item"><strong>Client Name</strong> : {{u.rClientName}}</li>
<li class="list-group-item"><strong>Compnay Name</strong> : {{u.rCompanyName}}</li>
<li class="list-group-item"><strong>Requirement</strong> : {{u.rRequirement}}</li>
</ul>
</div>
</div>
<!--<div class="panel-body" ng-repeat="u in details track by $index">-->
<!-- Careful the details.domain_data-->
<div class="panel-body" ng-repeat="u in details.domain_data track by $index">
<div class="col-lg-6">
<ul class="list-group">
<li class="list-group-item"><strong>Req. NO.</strong> : {{u.dSelectDomain}}</li>
<li class="list-group-item"><strong>dDomainName</strong> : {{u.dDomainName}}</li>
<li class="list-group-item"><strong>dRegisterDomainFrom</strong> : {{u.dRegisterDomainFrom}}</li>
</ul>
</div>
<div class="col-lg-6">
<ul class="list-group">
<li class="list-group-item"><strong>dStartDate</strong> : {{u.dStartDate}}</li>
<li class="list-group-item"><strong>dEndDate</strong> : {{u.dEndDate}}</li>
<li class="list-group-item"><strong>dRegistrationFor</strong> : {{u.dRegistrationFor}}</li>
</ul>
</div>
</div>
為什么要這樣做?
當您發布問題時:
echo json_encode($data);
在SELECT * FROM dhms_requirement
,
然后,再次,
echo json_encode($dataDomain);
在SELECT * FROM dhms_domain_details
,
所以你的響應數據應該是這樣的:
[...][...]
這是無效的 json 數據,因為您在控制台中看到了錯誤。
更新 php 后,我將兩個選擇結果包裝到$result
數組中,因此您的響應數據如下:
{"requirement_detail":[...],"domain_data":[...]}
當環在HTML模板,參考細節,它響應數據,分成2份,用detail.requirement_detail
作為第一部分,和domain_data
作為第二部分。
應該有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.