我从数据库表中返回行,我将其序列化为json,以便通过进行ajax调用来显示结果。
当我在我的Chrome控制台中查看结果时,它看起来是正确的,但是当我尝试显示它或进行计数时,它返回的方式比预期的要多。
$id = $_POST['userId'];
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);
if (!$result) {
die("Database connection failed");
}
$results = array();
foreach($result as $row){
$user_id = $row['id'];
$user_username = $row['username'];
$user_name = $row['name'];
$results[] = array('$id'=> $user_id, '$username' => $user_username,'$name' => $user_name);
}
echo json_encode($results);
前端
$.ajax({
type: "POST",
url: 'deleteUser.php',
data: {userId: userId},
success: function (data) {
container.Users = data;
console.log(container.Users.length);//returns a count of 773
console.log(container.Users);
}
});
然而,似乎返回了正确的json但是当我尝试使用下划线模板在我的页面中呈现它时,它返回773行而不显示任何值。
<table class="table table-bordered">
<% _.each (container.Users, function(user) {%>
<tr>
<td><%= user.$id %></td>
<td><%= user.$username %></td>
<td><%= user.$name %></td>
<td><input type='button' class='btn btn-primary btn-sm' name='delete' value='Delete' data-iddelete=$id id = <%= user.$id %>></td>
</tr>
<% }); %>
</table
我的代码出了什么问题?
答案 0 :(得分:1)
你的foreach
对我来说有点奇怪。它可能无法解答您的问题,但我想建议以下编辑:
$results = array();
foreach($result as $row){
$results[] = array(
'id' => $row['id'],
'username' => $row['user_username'],
'name' => $row['name']
);
// Or if your query might return double results
$results[$row['id']] = array(
'id' => $row['id'],
'username' => $row['user_username'],
'name' => $row['name']
);
}
上例中的第二个选项将用户的id设置为数组键。如果多次重新标记用户标识,则它将覆盖数组。
<table class="table table-bordered">
<% _.each (container.Users, function(user) {%>
<tr>
<td><%= user.id %></td>
<td><%= user.username %></td>
<td><%= user.name %></td>
<td><input type='button' class='btn btn-primary btn-sm' name='delete' value='Delete' data-iddelete="<%= user.id %>"></td>
</tr>
<% }); %>
</table
在dataType: "json"
下面添加data: ...
可能会解决一些问题。