2016-05-08 7 views
2

Ich übergebe ID, um JSON-Codierungsdaten mit Angular JS abzurufen.JSON-Daten können nicht mit PHP und Angular JS abgerufen werden.

Hier ist mein Controller:

dhmsApp.controller('dhmsDetailsView',function($scope,$http, $routeParams){ 
    $http.get("include/detailViewBg.php", {params: {id: $routeParams.id}}) 
     .success(function (response) {$scope.details = response}); 
}); 

Hier ist meine PHP SELECT-Abfrage-Code (detailViewBg.php) aus dem JSON

Codierte immer ist
<?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); 
} 



?> 

Hier meine HTML-Seite, wo ich bin Meine Daten abrufen

Es zeigt einen Fehler in der Konsole. Bitte sehen Sie in der unteren Abbildung View of Chrome Developer Tools. Javascript error message says "SyntaxError: Unexpected token [ in JSON at position 182

Antwort

2

Sie haben JSON-Daten zweimal Echo, so dass Ihre Antwort Daten ungültig Json ist.

<?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); 

?> 

und aktualisieren Sie Ihre HTML-Teil

<!--<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> 

Warum wie dies tun sollte?

  1. Wenn Sie Ihre Frage schreiben:

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

    und dann wieder

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

    so Ihre Antwortdaten sollte diese wie :

    [...][...]

    Es sind ungültige JSON-Daten, da Sie den Fehler in der Konsole gesehen haben.

  2. Nach php Aktualisieren gewickelt I zwei Auswahlergebnis in $result Array, so dass Ihre Antwortdaten wie folgt aus:

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

  3. Wenn in HTML-Vorlage Schleife Ihre Bezug auf Detail, die Antwortdaten ist , in 2 Teile geteilt, verwenden Sie detail.requirement_detail als ersten Teil und domain_data als zweiten Teil.

Sollte funktioniert.

+0

können Sie bitte überprüfen Sie meine HTML-Teil, wo ich Daten abholen .. tatsächlich, wenn ich Ihre Lösung hinzugefügt, Fehler von der Konsole verschwinden, aber Daten nicht drucken auf HTML-Teil. können Sie bitte überprüfen, wo mein Code fehlt –

+0

@HarshadPatil HTML aktualisiert. –

+0

In meiner Frage habe ich HTML hinzugefügt bitte überprüfen Sie mit in Frage –

Verwandte Themen