javascript - 无法使用 Ajax 调用更新 DataTable 的主体

标签 javascript jquery ajax datatables

我有一个数据表,我试图通过 ajax 调用加载数据,但第一行数据总是说:

“表格中没有可用数据” enter image description here

但是在它下面包含了加载的 ajax 数据。如何删除 No data 行并将 ajax 数据加载到该位置?

代码如下:

<div class="box-body">
  <table id="changeTicketsTable" class="table table-bordered table-striped">
    <thead>
      <tr>
        <th>Ticket Number</th>
        <th>Description</th>
        <th>Risk</th>
        <th>Primary CI</th>
        <th>State</th>
        <th>Planned Start Date</th>
        <th>Actual Start Date</th>
        <th>Actual End Date</th>
        <th>Affected Partners</th>
      </tr>
    </thead>
    <tbody>  

    </tbody>
    <tfoot>
      <tr>
        <th>Ticket Number</th>
        <th>Description</th>
        <th>Risk</th>
        <th>Primary CI</th>
        <th>State</th>
        <th>Planned Start Date</th>
        <th>Actual Start Date</th>
        <th>Actual End Date</th>
        <th>Affected Partners</th>
      </tr>
    </tfoot>
  </table>
</div>

数据表的实现:

<script>
    getChangeTicketInformation();
    $('#changeTicketsTable').DataTable({
      "pageLength": 5,
      'paging'      : true,
      'lengthChange': true,
      'searching'   : false,
      'ordering'    : true,
      'info'        : true,
      'autoWidth'   : false
    });
  })
</script>

用于进行 Ajax 调用的 Javascript:

function getChangeTicketInformation(){
  $.ajax({
     type: "GET",
     url: "../../get_change_ticket_info",
      success: function(data) {
        $.each(data, function (i, item) {
         $('#changeTicketsTable').find('tbody').append(
            '<tr>' +
            '<td>' + item.number + '</td>' +
            '<td>' + item.short_description + '</td>' +
            '<td>' + item.risk + '</td>' +
            '<td>' + item.cmdb_ci_display_value + '</td>' +
            '<td>' + item.state + '</td>' +
            '<td>' + item.start_date + '</td>' +
            '<td>' + item.work_start + '</td>' +
            '<td>' + item.work_end + '</td>' +
            '<td>' + 'FILL IN' + '</td>'
            + '</tr>');
        });
      }
    });
}

最佳答案

在 Chrome 中打开 Developer tools 并在您的页面中键入 jquery(也在下面),看看会发生什么。然后检查 html 并查看它是否按预期更新 - 它可能在那里,但可能被隐藏了。

但实际上更好的方法是使用 DataTable 的内置 ajax 功能: https://datatables.net/examples/ajax/simple.html

$('#changeTicketsTable').find('tbody').append(
            '<tr>' +
            '<td>' + item.number + '</td>' +
            '<td>' + item.short_description + '</td>' +
            '<td>' + item.risk + '</td>' +
            '<td>' + item.cmdb_ci_display_value + '</td>' +
            '<td>' + item.state + '</td>' +
            '<td>' + item.start_date + '</td>' +
            '<td>' + item.work_start + '</td>' +
            '<td>' + item.work_end + '</td>' +
            '<td>' + 'FILL IN' + '</td>'
            + '</tr>');
        });

关于javascript - 无法使用 Ajax 调用更新 DataTable 的主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431796/

相关文章:

javascript - 使用 Javascript 更改 CSS 值

javascript - 如何模拟 ajax 响应

javascript - 取消 MVC 表单提交

javascript - ExtJS addEvents - 它是可选的吗?

javascript - Jquery 无法使用 ID 选择器进行匿名函数调用

javascript - 如何使用 Javascript 在桌面上创建新文件夹?

javascript - 我如何让 jQuery 与我一起工作?

javascript - 使用 JavaScript 访问分配给单击的提交按钮的值

javascript - 我的网站的 Java 表单验证

javascript - 在Webworker中使用AJAX加载javascript资源