2016-08-04 9 views
1

Ich möchte Kommentare aus der Datenbank herunterladen und sie auf meiner Seite anzeigen. Der aktuelle Code gibt einen Syntaxfehler zurück, da die PHP-Datei keine korrekte JSON-Datei zurückgibt.Holen Array von Objekten aus der Datenbank mit Ajax

Mein PHP-Code (keine Verbindungsprobleme also nur Teil holen).

if ($result->num_rows > 0){ 

    while($row = $result->fetch_assoc()) { 

     echo json_encode(array(
      "id" => $row["id_com"], 
      "nick" => $row["com_nick"], 
      "email" => $row["com_email"], 
      "text" => $row["com_text"], 
      "data" => $row["com_data"], 
      "ocena" => $row["ocena"] 
     )); 
    } 

Zurückgegebener Wert.

{"id":"1","nick":"my_nick","email":"[email protected]","text":"content!","data":"2016-08-03","rate":"5"}{"id":"4","nick":"ra","email":"[email protected]","text":"Hat","data":"2016-08-03","ocena":"1"} ect... 

Ajax-Request (ich glaube Problem hier liegt)

$.ajax 
    ({ 
     url: "/commdown.php", 
     dataType: 'json', 
     success: function(data) 
     { 
       alert( 

         "id: " + data.id + 
         "\nnick: " + data.nick + 
         "\nemail: " + data.email + 
         "\ntext: " + data.text + 
         "\ndata: " + data.data + 
         "\nocena: " + data.ocena 

      ); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) 
     { 
      alert("Status: " + textStatus); alert("Error: " + errorThrown); 
     } 
    }); 

Ich denke, das Problem ist, dass ich mehrere Objekte mit einzelnen Ajax-Request statt fordern eine Anfrage für jeden Kommentar einzeln bin Download bereit.

+0

Können Sie die Fehlermeldung zitieren? – Klaus

+0

Sie geben mehrere JSON-Objekte zurück, anstatt eines, das ungültige JSON-Objekte erstellt. Sammeln Sie sie in Ihrer Weile und machen Sie einen 'echo json_encode();'. – Fairy

Antwort

0

ein Array verwenden, alle Daten anzuhängen, um es dann Echo, das codierte Daten, eine Schleife in der ajax es verwenden

if ($result->num_rows > 0){ 
    $data = []; 
    while($row = $result->fetch_assoc()) { 

     $data[] = array(
      "id" => $row["id_com"], 
      "nick" => $row["com_nick"], 
      "email" => $row["com_email"], 
      "text" => $row["com_text"], 
      "data" => $row["com_data"], 
      "ocena" => $row["ocena"] 
     ); 
    } 
header('Content-Type: application/json'); 
echo json_encode(data); 

js auf der Seite/Alarmfeld anzuzeigen:

$.ajax 
    ({ 
     url: "/commdown.php", 
     dataType: 'json', 
     success: function(retdata) 
     { 
      $.each(retdata,function(i,data){ 
       alert( 

         "id: " + data.id + 
         "\nnick: " + data.nick + 
         "\nemail: " + data.email + 
         "\ntext: " + data.text + 
         "\ndata: " + data.data + 
         "\nocena: " + data.ocena 

      ); 
      }); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) 
     { 
      alert("Status: " + textStatus); alert("Error: " + errorThrown); 
     } 
    }); 
+0

Code innerhalb von $ .each funktioniert nicht. Ich habe zwei Warnungen hinzugefügt. Eine interne Erfolgsfunktion zeigt sich, aber eine andere in jedem nicht. – Kuszluk

+0

Es funktioniert jetzt, danke :)! – Kuszluk

0

zu bekommen eine richtige json dies versuchen ..

$data = array(); 
while ($row = $result->fetch_assoc()){ 
    $data[] = json_encode($row); 
} 
echo json_encode($data); 

Entweder Sie verwenden können.

$data = $result->fetch_all(MYSQLI_ASSOC); 
echo json_encode($data); 
+0

ja, bearbeitete die Antwort, zuerst erwähne ich die zweite Art zu denken .. – Sarath

Verwandte Themen