2017-05-25 5 views
0

Ich versuche, Daten aus meiner Datenbank mit Ajax und PHP zu bekommen, aber jedes Mal, wenn ich versuche, bekomme ich einen Fehler mit Ajax. Hier ist mein Code:PHP Daten zurück an AJAX senden

HTML

Hier ist mein Code, wo ich die PHP-Datei anfordern.

<body> 
    <div id="wrapper"> 
     <h2>Coffe Shop</h2> 
     <p class="bold">Drink orders:</p> 

     <ul class="orders"> 
     </ul> 

     <p class="bold">Add an order:</p> 
     <p>Drink: <input type="text" id="name"/><input type="submit" id="submit"/></p> 

     <button id="refresh">CLICK ME</button> 
    </div> 

    <script> 
     $(function(){ 
      $("#refresh").on("click", function() { 
       $.ajax({ 
       type: "GET", 
       url: "data.php", 
       dataType: "json", 
       success: function(names){ 
        $.each(names, function(name){ 
         alert(name); 
        }); 
       }, 
       error: function(){ 
        alert("error"); 
       } 
      }); 
     }); 
      }); 

    </script> 
</body> 

PHP

Hier ist meine PHP-Datei

<?php 

$conn = mysqli_connect("localhost:8080", "root", "", "test1") 
    or die("Error with connection"); 


$sql = "SELECT ime FROM users;"; 

$result = mysqli_query($conn, $sql); 

$row = mysqli_fetch_array($result); 
$names = array(); 

while($row){ 
    $name = array(
     "name"=> $row['ime'] 
    ); 

$names[] = $name; 
} 

echo json_encode($names); 
+3

Was ist der Fehler? –

Antwort

2

Sie haben eine unendliche Schleife in Ihrem PHP. Sie holen nur eine Zeile und dann über dieselbe Zeile. Da Sie niemals $row in der Schleife ändern, endet es nie. Es sollte sein:

while ($row = mysqli_fetch_assoc($result)) { 
    $name = array('name' => $row['ime']); 
    $names[] = $name; 
} 

Sobald Sie beheben, dass die JSON Sie aussehen werden, zu senden werde:

[{"name": "Some name"}, {"name": "Another name"}, {"name": "Fred"}] 

In Ihrem Javascript, du bist nicht die name Eigenschaft zugreifen. Ändern

alert(name); 

zu:

alert(name.name); 

Oder Sie könnten die PHP ändern, so dass es nur ein Array von Strings anstelle von Objekten sendet:

while ($row = mysqli_fetch_assoc($result)) { 
    $names[] = $row['ime']; 
} 
+0

Danke, das hat das Problem verschwinden lassen – byteMe