【问题标题】:Unable to fetch JSON Data using PHP & Angular JS无法使用 PHP 和 Angularjs 获取 JSON 数据
【发布时间】:2016-09-03 04:20:38
【问题描述】:

我正在传递 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>

它在控制台中显示错误。请看下图

【问题讨论】:

    标签: javascript php angularjs


    【解决方案1】:

    你回显了两次 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>
    

    为什么要这样做?

    1. 当您发布问题时:

      echo json_encode($data);SELECT * FROM dhms_requirement 之后,

      然后,再次,

      echo json_encode($dataDomain);SELECT * FROM dhms_domain_details 之后,

      所以你的响应数据应该是这样的:

      [...][...]

      这是无效的 json 数据,正如您在控制台中看到的错误。

    2. 更新 php 后,我将两个选择结果包装到 $result 数组中,因此您的响应数据如下:

      {"requirement_detail":[...],"domain_data":[...]}

    3. 在html模板中循环时,你对detail的引用,即响应式数据,分为两部分,第一部分使用detail.requirement_detail,第二部分使用domain_data

    应该可以。

    【讨论】:

    • 您能否检查我正在获取数据的 html 部分。实际上,当我添加您的解决方案时,控制台中的错误消失了,但数据未在 html 部分上打印。你能检查我的代码在哪里吗
    • 在我的问题中我添加了 HTML 请在问题中查看
    • 非常感谢好友的大力支持.. 它对我有用......我可以在我的 html 文件中看到数据......
    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2018-10-25
    • 1970-01-01
    • 2016-05-31
    • 2023-04-09
    相关资源
    最近更新 更多