PHP将数据发送回AJAX

时间:2017-05-25 13:45:38

标签: php ajax

我试图使用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);

1 个答案:

答案 0 :(得分: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'];
}