如何使数据表工作?

How to make dataTable work?

是的。当谈到 jquery 时,我的耳朵还很嫩。我试图远离它,但它似乎是这类工作所需要的。虽然有人说你真的不需要。

现在,我从 Editor - dataTables 获得了扩展并将其实现到我的 HTML 中。我的问题是,加载时似乎无法在 html 上显示 table。 是因为缺少 table 的值吗?还是我遗漏了什么,我应该在代码中定义才能使其工作?

JSFIDDLE

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Webbased WinCos</title>
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.6/css/jquery.dataTables.css">
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/tabletools/2.2.4/css/dataTables.tableTools.css">
    <link rel="stylesheet" type="text/css" href="css/dataTables.editor.css">

    <script type="text/javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="//cdn.datatables.net/1.10.6/js/jquery.dataTables.js"></script>
    <script type="text/javascript" src="//cdn.datatables.net/tabletools/2.2.4/js/dataTables.tableTools.js"></script>
    <script type="text/javascript" src="js/dataTables.editor.js"></script>
    <!--[if IE]>
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
  </head>
  <body>

    <script type="text/javascript">
      var editor = new $.fn.dataTable.Editor( {} );

      new $.fn.dataTable.Editor( {
      ajax:  '/api/staff',
      table: '#staff',
      fields: [
          { label: 'First name', name: 'first_name' },
          { label: 'Last name',  name: 'last_name'  },
          // etc
      ]
  } );

  $('#myTable').DataTable( {
      ajax: '/api/staff',
      dom:  'Tfrtip',
      columns: [
          { data: 'first_name' },
          { data: 'last_name' },
          // etc
      ],
      tableTools: {
          sRowSelect: 'os',
          aButtons: [
              { sExtends: 'editor_create', editor: editor },
              { sExtends: 'editor_edit',   editor: editor },
              { sExtends: 'editor_remove', editor: editor }
          ]
      }
  } );

    </script>

    <table id="myTable" class="display" cellspacing="0" width="100%">
                    <thead>
                        <tr>
                            <th>First name</th>
                            <th>Last name</th>
                            <th>Position</th>
                            <th>Office</th>
                            <th width="18%">Start date</th>
                            <th>Salary</th>
                        </tr>
                    </thead>
                </table>

  </body>
</html>

如果您实际上在 /api/staff 路径上有一个服务,您的问题是您在 DOM 准备好之前初始化了数据表。您需要将 DOM 操作代码包装在

$(document).ready(function() {
    //code here
});

否则不行

对于您的示例,如果您使用 DataTables 调用的最简单变体,数据表似乎工作得很好:

$(document).ready(function() {
    $('#myTable').DataTable({
        ajax: '/api/staff',
    });
}); 

可以看到此示例在 https://jsfiddle.net/jtoud32z/3/ 上运行 - 当然,它不会从 /api/staff 服务返回任何结果。

当你有这个工作时,你可以将其他参数添加到 .DataTable 调用,如 columns。确保只是一个一个地添加参数,这样你就可以了解它们各自的作用。在您的示例中,您直接从他们站点的示例中复制了代码,并更改了 Ajax url。改为更改参数以适用于您的系统。 :-)