我试图使用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);
答案 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'];
}