jquery - bootstrap4 dataTables 搜索选项不起作用
问题描述
我正在使用 bootstrap4 dataTables 从服务器填充数据。我已成功填充表中的数据。但是当我在搜索表中输入值时,表变为空。我不知道为什么会在这里发生是我的代码...
在加载时我使用了下面的代码
<script type="text/javascript"> $(document).ready(function() { $('#tb_product_details').DataTable(); getData(); }); </script>
我已经使用以下代码从服务器填充数据
function getData() { $.ajax({ type : "POST", url : "productDetails/getProductList", success : function(data) { var trHTML = ''; for (var i = 0; i < data.length; i++) { var item = data[i]; trHTML += '<tr>'; trHTML += '<td>'+ item.slno + '</td>'; trHTML += '<td>'+ item.productid + '</td>'; trHTML += '<td>'+ item.name + '</td>'; trHTML += '</tr>'; } $('#tb_product_details tbody').append(trHTML); } }) }
我使用了下面的 html 表格代码..
<table class="table table-bordered" id="tb_product_details" width="100%" cellspacing="0"> <thead> <tr> <th>SL</th> <th>Product ID</th> <th>Product Name</th> </tr> </thead> <tbody> </tbody> </table>
这是数据表js
<link href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css" rel="stylesheet"> <script src=" https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script> <script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
这是一个显示当前情况的 jsfiddle:https ://jsfiddle.net/035adhcx/
请帮我找出为什么搜索不起作用....
解决方案
当您的表中实际上没有设置时,您将数据附加到tbody
( ) 上,尝试手动添加标签并查看是否可以解决您的问题,也尝试添加到您的标签中,如下所示:https ://datatables.net/手动/安装$('#tb_product_details tbody').append(trHTML);
tbody
tbody
class="display"
table
更新:您还可以在调用 DataTable 插件后填充您的表格,这是不行的,因为插件需要在加载之前设置正确的表格,请参阅我使用文档中提供的表格演示制作的小提琴,效果很好:https://jsfiddle.net/zn7gv3ux/
我认为您应该在从 ajax 请求填充数据后在成功回调中调用 DataTable,这样您将确保您的表已准备好由插件处理。
所以这样做:
<script type="text/javascript">
$(document).ready(function() {
getData();
});
</script>
function getData() {
$.ajax({
type : "POST",
url : "productDetails/getProductList",
success : function(data) {
var trHTML = '';
for (var i = 0; i < data.length; i++) {
var item = data[i];
trHTML += '<tr>';
trHTML += '<td>'+ item.slno + '</td>';
trHTML += '<td>'+ item.productid + '</td>';
trHTML += '<td>'+ item.name + '</td>';
trHTML += '</tr>';
}
$('#tb_product_details tbody').append(trHTML);
$('#tb_product_details').DataTable(); //call the plugin here after appending datas
}
})
}
来自GrafiCode Studio 的jsfiddle 的片段,他测试了我的解决方案:
$(document).ready(function() {
var trHTML = '<tr><td>1</td><td>1</td><td>1</td></tr><tr><td>2</td><td>2</td><td>2</td></tr>';
$('#tb_product_details tbody').append(trHTML);
$('#tb_product_details').DataTable();
});
<link rel="stylesheet" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<table class="table table-bordered" id="tb_product_details" width="100%" cellspacing="0">
<thead>
<tr>
<th>SL</th>
<th>Product ID</th>
<th>Product Name</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
推荐阅读
- google-chrome - A2HS 停止触发任何 PWA。是否有触发 A2HS 的实际规格?
- travis-ci - 如何设置 .travis.yml 在子文件夹中构建项目?
- cmake - CMake 找不到 ROS 包
- mysql - 用于获取不同类别和相关子类别 Laravel 的嵌套查询
- angular - Angular 延迟加载 - Chrome 和 Firefox 之间的区别
- python - Jaspersoft - Python - LXML - CSV - 变量子标签
- spring - 如何在休眠条件动态查询中使用多个表?
- css - 将 img 移到中间
- c++14 - 我找不到除以零的位置,因为我将“inf”作为 I/P 的 O/P
- delphi - Graphics32 和 VCL 样式