[英]Unable to fetch JSON Data using PHP & Angular JS
I'm passing ID to fetch JSON encode data using Angular JS.我正在传递 ID 以使用 Angular JS 获取 JSON 编码数据。
Here is my controller:这是我的控制器:
dhmsApp.controller('dhmsDetailsView',function($scope,$http, $routeParams){
$http.get("include/detailViewBg.php", {params: {id: $routeParams.id}})
.success(function (response) {$scope.details = response});
});
Here is my PHP SELECT Query code (detailViewBg.php) from which JSON is getting Encoded这是我的 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);
}
?>
Here is my HTML page where I'm fetching my data这是我获取数据的 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>
It's showing an error in the console.它在控制台中显示错误。 Please see in the below image
请看下图
You did echo json data twice, so your response data is invalid json.您确实回显了 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);
?>
And update your html part并更新您的 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>
Why should do like this?为什么要这样做?
When you post your question:当您发布问题时:
echo json_encode($data);
after SELECT * FROM dhms_requirement
,在
SELECT * FROM dhms_requirement
,
and then, again,然后,再次,
echo json_encode($dataDomain);
after SELECT * FROM dhms_domain_details
,在
SELECT * FROM dhms_domain_details
,
so your response data should like this:所以你的响应数据应该是这样的:
[...][...]
It's invalid json data, as you saw the error in the console.这是无效的 json 数据,因为您在控制台中看到了错误。
After updating php, I wrapped two select result into $result
array, so your response data like this:更新 php 后,我将两个选择结果包装到
$result
数组中,因此您的响应数据如下:
{"requirement_detail":[...],"domain_data":[...]}
When loop in html template, your reference to detail, which is responsive data, divided into 2 parts, use detail.requirement_detail
as first part, and domain_data
as second part.当环在HTML模板,参考细节,它响应数据,分成2份,用
detail.requirement_detail
作为第一部分,和domain_data
作为第二部分。
Should works.应该有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.