2017-11-09 3 views
2

Grundsätzlich was ich versuche zu tun ist ng-repeat Datensätze aus meiner Datenbank, aber ich bekomme den folgenden Fehler 'SyntaxError: Unerwartete Token F in JSON an Position 0'.Anzeigen von Daten aus einer Datenbank mit Angularjs

Hier ist mein Code:

HTML

<tr ng-repeat="x in data"> 
    <td>{{x.songName}}</td> 
    <td>{{x.albumName}}</td> 
</tr> 

JS

$scope.loadTracks = function(){ 
    $http.get('includes/functions/gettrack.php').success(function(data){ 
     $scope.data = data; 
    }) 
} 

PHP

<?php 

    header("Access-Control-Allow-Origin: *"); 
    header("Content-Type: application/json"); 

    $data = array(); 
    $sql = "SELECT * FROM tracks"; 

    // Create a prepared statement 
    $stmt = mysqli_stmt_init($connection); 

    // Prepare the prepared statement 
    if (!mysqli_stmt_prepare($stmt, $sql)) { 
     // Error exists 
     die('Fatal error: service unavailable at this time'); 
    } else { 

     // Run parameters inside the database 
     mysqli_stmt_execute($stmt); 
     $result = mysqli_stmt_get_result($stmt); 


     if (mysqli_num_rows($result) > 0) { 
      // Check for results and assign results to array 
      while ($row = $result->fetch_assoc()){ 
       $data[] = $row; 
      } 
      echo json_encode($data); 
     } 
    } 
?> 
+0

Sie haben keine js gezeigt ... –

+0

Die Fehlermeldung ist ziemlich klar: etwas ist, mit dem JSON falsch. Wir können Ihnen nicht helfen, wenn Sie es nicht hier posten – WirelessKiwi

+0

fügen Sie bitte mehr Code und JSON – Lakmi

Antwort

2

Ich vermute, dass Ihr Code die('Fatal error: service unavailable at this time'); ausgeführt wird. Zeichen 0 dieser Zeichenfolge ist F, die Ihrem Fehler entspricht.

Die JS wird versuchen, zu dekodieren, die nicht gültig JSON ist.

die() legt keinen HTTP-Code fest, so dass die AJAX-Anfrage als erfolgreich angesehen wird. Versuchen Sie den Code mit http_response_code() Einstellung:

if (!mysqli_stmt_prepare($stmt, $sql)) { 
    // Error exists 
    http_response_code(500); 
    die('Fatal error: service unavailable at this time'); 
} else { 

Sie sollten auch Ihre AJAX-Aufruf einstellen mit dem Fehler umgehen:

$http.get('includes/functions/gettrack.php').success(function(data){ 
    $scope.data = data; 
}).fail(function(){ 
    console.error('AJAX call failed'); 
}); 

Alternativ können Sie die Zeichenfolge ändern innerhalb die() zurückgegeben werden, aber ich würde empfehlen, dass das ist nicht wirklich ein guter Weg, um es zu beheben.

die('"Fatal error: service unavailable at this time"'); 
+1

Danke, das hat mir geholfen, dass ich deinen Code hinzugefügt habe! Ich war so dumm zu vergessen "require_once '../../config/db_connect.php';". –

0

Sie die Verbindung zur Datenbank fehlt ...

$connect = mysqli_connect($db['hostname'],$db['username'],$db['password'],$db['database']); 
Verwandte Themen