javascript - 根据 Ajax GET 请求将复选框设置为选中

标签 javascript jquery ajax rest checkbox

我正在尝试根据通过 ajax get 请求来自服务器的数据来检查复选框:


var GetTodos = (function () {
//GET/READ 
   return $.ajax({
        url: '/api/Todos/GetTodos',
        contentType: 'application/json',
        success: function (todos) {
            var tbodyEl = $('tbody');
            $.each(todos, function (i, todo) {
                if (!todo.isCompleted)
                    $('#myCheckbox').prop('checked', false);
                else
                    $('#myCheckbox').prop('checked', true);
                tbodyEl.append('\
                    <tr>\
                        <td><input type="checkbox" value="'+todo.id+'" id="myCheckbox" checked/></td>\
                        <td class="id">' + todo.id + '</td>\
                        <td><input type="text" class="name" value="' + todo.text + '"></td>\
                        <td>\
                            <button id="editBtn" class="btn btn-warning">Update</button>\
                            <button id="deleteBtn" class="btn btn-danger">Delete</button>\
                        </td>\
                    </tr>\
                ');
            });
        }
    });
});

所以我发送一个ajax get请求来获取json数据,以下响应是这样的


[
  {
    "id": 1,
    "text": "Walk the dog",
    "isCompleted": false
  },
  {
    "id": 4,
    "text": "go out with friends",
    "isCompleted": false
  },
  {
    "id": 5,
    "text": "touch the fishy",
    "isCompleted": true
  }
]

这就是我的结局


enter image description here


所以复选框没有被正确选中。如果有人可以帮助我解决这个问题,我将不胜感激,谢谢。

最佳答案

<强> Working fiddle

首先,id 在同一文档中应该是唯一的,因此在您的情况下,将 id myCheckbox 替换为 id myCheckbox[todo.id] .

checked true 和 false 都会检查输入,您应该添加属性 checked 以防万一您想检查:

$.each(todos, function (i, todo) {
    var checked = '';

    if (todo.isCompleted)
        checked = 'checked';

    tbodyEl.append('\
        <tr>\
            <td><input type="checkbox" value="'+todo.id+'" id="myCheckbox['+todo.id+']" '+checked+'/></td>\
            <td class="id">' + todo.id + '</td>\
            <td><input type="text" class="name" value="' + todo.text + '"></td>\
            <td>\
                <button id="editBtn" class="btn btn-warning">Update</button>\
                <button id="deleteBtn" class="btn btn-danger">Delete</button>\
            </td>\
        </tr>\
    ');
});

希望这有帮助。

关于javascript - 根据 Ajax GET 请求将复选框设置为选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741302/

相关文章:

javascript - jquery 'regex' 切换

javascript - 如何获取 JSON URL 文件并使其不断更新

在asp.net mvc 5中连接到远程数据库时jquery ajax调用失败

javascript - 如何将一个网页嵌入另一个网页并隔离 CSS

javascript - 当另一个 div 在 jQuery 中显示时隐藏一个 div?

javascript - 在 Node.js 中的变量中插入 ASCII

javascript - 如何使用 jQuery 验证插件以编程方式检查表单是否有效

jquery - 如何使用标签管理器?

ajax - 为什么不允许跨域AJAX调用?

javascript - 如何检查String是否包含 "?"标记