DataTables警告:非表格节点初始化(TBODY)。PHP

3
我正在尝试在其他PHP页面中第二次使用DataTables,但我卡在了这个错误上,
数据表警告:非表节点初始化(TBODY)。
我做错了什么? 我在我的第一个PHP页面中尝试过这段代码,它可以正常工作。
以下是我的表格代码:
<table class="table table-striped table-hover ">
          <div class="row">
              <div class="col-lg-12">
                  <div class="page-header">
                      <h1 id="tables">Admin's Accounts</h1>
                  </div>
                      <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#modal"><i class="zmdi zmdi-plus-circle zmdi-hc-2x"></i></button>
                      <table class="table table-striped table-hover ">
                          <thead>
                              <tr>
                                  <th>#</th>
                                  <th>Name</th>
                                  <th>Contact</th>
                                  <th>Email Address</th>
                                  <th>Position</th>
                                  <th>Option</th>
                              </tr>
                          </thead>
                          <tbody id="admin">
                                  <?php
                            //set up mysql connection
                            mysql_connect("localhost", "root", "") or die(mysql_error());
                            //select database
                            mysql_select_db("brm_dbs") or die(mysql_error());
                                    //select all records form tblmember table
                                    $query = 'SELECT uid,name,contact,email,position FROM admin ORDER BY created_at DESC';
                                    //execute the query using mysql_query
                                    $result = mysql_query($query);
                                   //then using while loop, it will display all the records inside the table
                                    while ($row = mysql_fetch_array($result)) {
                                        echo ' <tr> ';
                                        echo ' <td> ';
                                        echo $row['uid'];
                                        echo ' <td> ';
                                        echo $row['name'];
                                        echo ' <td> ';
                                        echo $row['contact'];
                                        echo ' <td> ';
                                        echo $row['email'];
                                        echo ' <td> ';
                                        echo $row['position'];
                                        echo '<td>';
                                        echo '<button type="button" class="btn btn-link" data-toggle="modal" data-target="#myModal'.$row['uid'].'"><i class="zmdi zmdi-plus-circle zmdi-hc-2x"></i></button>';
                                    }
                              ?>
                          </tbody>
                  </table> 
              </div>
          </div>
          </table> 

我正在使用这个JQUERY

<script src="https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.9/js/dataTables.bootstrap.min.js"></script>
    <script>
         $(document).ready(function() {
             $('#admin').DataTable( {
                 "lengthMenu": [[5, 10, 25, -1], [5, 10, 25, "All"]]
             });
         } );
    </script>

1
我认为tbody中的ID属性是个问题。我认为在tbody元素中不允许使用它,或者DataTables无法识别这个(不规范的)标签。 - daremachine
为什么它对我的第一个页面有效,但不允许使用? - Meyka Jograt
1
你确定这是正确的方法吗?DataTables插件应该加载在放置在table标签内而非body内部的选择器上。 - daremachine
请查看文档中的示例,我没有看到类似于您的代码。https://www.datatables.net/examples/index - daremachine
我尝试了,但什么都没用,没有错误,但也没有分页和筛选。 - Meyka Jograt
1
好的,你有6个TH和7个TD?这是不兼容的,可能会导致此错误行为。 - daremachine
3个回答

6
我收到了一个错误:由于在DOM中有另一个元素具有相同的“ID”,所以无法初始化非表节点。
<table id="allProducts" class="table table-striped table-bordered" style="width:100%">

并且在导航菜单中使用相同的 ID

<a class="dropdown-item" href="#" id="allProducts" ><i class="fa fa-star"></i> All Products</a>

由于相同的ID重复,我遇到了错误... :) 继续编码,愉快地度过时光。

6

根据文档,出现错误的情况是以下之一。

例如,考虑这个div和表格:

<div id="demo" class="display">
    <table class="display">...</table>
</div>

如果您尝试在#demo上初始化DataTables
$('#demo').dataTable()

您会收到错误提示,因为 #demo 不是表格元素。
如果您尝试在 .display 上初始化。
$('.display').dataTable();

当你使用.display类时,会出现错误,因为这个类名过于模糊,意味着有不止一个元素使用了这个类名,而DataTables期望这是一个唯一的元素。

结论:

  1. 确保在正确的节点元素上初始化DT。

  2. 确保DT元素的类名/ID是唯一的。


好的回答,还要确保您没有两个具有相同名称的ID。无论如何,这都应该被避免,因为ID应该是唯一的,但这是另一种导致此问题的方式。 - JamesB

2

我编辑了我的表格代码,我遇到了语法错误 6TH,但只有7TD,并且在echo中仅删除了最后一个TD,现在它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接