返回用户数超过预期

时间:2015-12-01 09:35:08

标签: php jquery json underscore.js

我从数据库表中返回行,我将其序列化为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

我的代码出了什么问题?

1 个答案:

答案 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

Ajax调用

dataType: "json"下面添加data: ...可能会解决一些问题。