2017-05-25 68 views
0

我想從我的數據庫使用ajax和php獲取數據,但每當我嘗試獲取數據時,都會收到ajax錯誤消息。這裏是我的代碼:PHP將數據發送回AJAX

HTML

這裏是我的代碼,我請求PHP文件。

<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

這是我的PHP文件

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

有什麼錯誤? –

回答

2

你在你的PHP無限循環。你只是取一行,然後遍歷同一行。既然你永遠不會改變循環中的$row,它永遠不會結束。它應該是:

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

一旦你解決這個問題,你會被髮送JSON的樣子:

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

在JavaScript,你不訪問name財產。更改

alert(name); 

到:

alert(name.name); 

或者你可以改變PHP所以它只是將字符串而非對象的數組:

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

謝謝,這使問題消失 – byteMe