возвращающиеся пользователи считают больше, чем ожидалось

Я возвращаю строки из таблицы базы данных, которую сериализую, в 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

Решение

Ваш 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']
);
}

Вторая опция в приведенном выше примере установит идентификатор пользователя в качестве ключа массива. Если идентификатор пользователя будет возвращен несколько раз, он будет перезаписан в массиве.

Ваш шаблон

<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

Ajax Call

Добавление dataType: "json" ниже data: ... может решить некоторые проблемы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]