【问题标题】:How to add data to an initialized dataTable with Jquery?如何使用 Jquery 将数据添加到已初始化的数据表中?
【发布时间】:2015-08-18 12:13:56
【问题描述】:

我的 html 中有一个表格(数据表);

<table id="datatable-table" class="table table-striped table-hover">
    <thead>
    <tr>
        <th>Id</th>
        <th>Band Name</th>
        <th>Members</th>
        <th>Bio</th>
        <th>Song List</th>
    </tr>
    </thead>

</table>

我在脚本标签中有一些 JQuery,其中包含有关如何获取 JSON 数据来填充它的信息;

<script>

    $(document).ready(function() {
        $.ajax({
            url: 'bands',
            type: 'GET',
            dataType: 'json',
            success: function(data) { 
                $('#datatable-table').dataTable({
                    "sAjaxDataProp": "",
                    "bProcessing": true, 
                    "aaData": data,
                        "aoColumnDefs": [
                            { "mData": "id"},
                            { "mData": "bandname"},
                            { "mData": "members"},
                            { "mData": "bio"},
                            { "mData": "songlist"}
                    ]
                });
            },
            error: function() { console.log('error retrieving customers'); }
        });
    });

</script>

当我运行这个时,我得到一个错误;

DataTables 警告:表 id=datatable-table - 无法重新初始化 数据表。有关此错误的更多信息,请参阅 http://datatables.net/tn/3

有什么想法吗? :-)

* 编辑 *

我正在使用我得到的主题,但我看不到表已经初始化的位置?

这是完整的代码;

<!DOCTYPE html>
<html>
<head>
    <title>bandsly</title>

        <link href="css/application.css" rel="stylesheet">
    <link rel="shortcut icon" href="img/favicon.png">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
    <meta charset="utf-8">
    <script>
        /* yeah we need this empty stylesheet here. It's cool chrome & chromium fix
           chrome fix https://code.google.com/p/chromium/issues/detail?id=167083
                      https://code.google.com/p/chromium/issues/detail?id=332189
        */
    </script>
</head>
<body class="background-dark">

                <div class="container">

                <br><br>
                <div class="row">
                    <div class="col-xs-6">
                        <div class="animated fadeInLeftBig">
                            <h1 class="slide-one-header"><strong>bands</strong>ly</h1>
                                <h4>Australia's best <strong>band matching</strong> site - find the band for you, <strong>now.</strong></h4>
                                <br>
                            <p class="lead hidden-xs">
                                We exists to make it easy for people to find a good <br>band for their wedding, birthday, barmitzvah, you name it.<br><br>
                                Our mission is to connect people & help organise <br>some amazing events for you on your special day.
                                <br><br>
                                Best of all, it's... <strong>Easy. Fun. Free</strong>
                            </p>

                        </div>
                    </div>
                    <div class="col-xs-6">
                        <div class="text-align-center animated fadeInRightBig">
                            <img src="img/music.png" width="90%">
                        </div>
                    </div>
                </div>
                </div>

        <div class="content container">

        <section class="widget">

            <div class="body">

                <div class="mt">
                    <table id="datatable-table" class="table table-striped table-hover">
                        <thead>
                        <tr>
                            <th>Id</th>
                            <th>Band Name</th>
                            <th>Members</th>
                            <th>Bio</th>
                            <th>Song List</th>
                        </tr>
                        </thead>

                    </table>
                </div>
            </div>
        </section>
        </div>

<!-- common libraries. required for every page-->
<script src="lib/jquery/dist/jquery.min.js"></script>
<script src="lib/jquery-pjax/jquery.pjax.js"></script>
<script src="lib/bootstrap-sass-official/assets/javascripts/bootstrap.js"></script>
<script src="lib/widgster/widgster.js"></script>
<script src="lib/underscore/underscore.js"></script>

<!-- common application js -->
<script src="js/app.js"></script>
<script src="js/settings.js"></script>

<!-- page specific libs -->
<script src="lib/bootstrap-select/dist/js/bootstrap-select.min.js"></script>
<script src="lib/underscore/underscore.js"></script>
<script src="lib/backbone/backbone.js"></script>
<script src="lib/backbone.paginator/lib/backbone.paginator.min.js"></script>
<script src="lib/backgrid/lib/backgrid.min.js"></script>
<script src="lib/backgrid-paginator/backgrid-paginator.js"></script>
<script src="lib/datatables/media/js/jquery.dataTables.min.js"></script>

<!-- page application js -->
<script src="js/tables-dynamic.js"></script>



<script>

    $(document).ready(function() {
        $.ajax({
            url: 'bands',
            type: 'GET',
            dataType: 'json',
            success: function(data) { 
                $('#datatable-table').dataTable({
                    "sAjaxDataProp": "",
                    "bProcessing": true, 
                    "aaData": data,
                        "aoColumnDefs": [
                            { "mData": "id"},
                            { "mData": "bandname"},
                            { "mData": "members"},
                            { "mData": "bio"},
                            { "mData": "songlist"}
                    ]
                });
            },
            error: function() { console.log('error retrieving customers'); }
        });
    });

</script>



</body>
</html>

哦,直播网站位于:http://bandsly.com/index3.html

【问题讨论】:

  • 您必须在代码中的其他位置初始化数据表。

标签: jquery datatable


【解决方案1】:

您已经在tables-dynamic.js第 228 行设置了 DataTables。

您要么希望将两个 init 合并在一起,要么停止删除 tables-dynamic.js 中的 initDataTables() 调用

您还想使用 ajax 来源的数据。

尝试将您的 ajax 调用替换为

$('#datatable-table').dataTable({
    "ajax": 'bands',
    "sAjaxDataProp": "",
        "bProcessing": true,
        "aoColumnDefs": [{
        "mData": "id"
    }, {
        "mData": "bandname"
    }, {
        "mData": "members"
    }, {
        "mData": "bio"
    }, {
        "mData": "songlist"
    }]
});

【讨论】:

  • 谢谢,我试过了,但还是同样的错误。我会发布整个代码,一秒钟。
  • 谢谢 - 你达到了目标。我现在已经从 html 页面中删除了 SCRIT 标记,并且只是将其初始化一次。完美运行。
【解决方案2】:

试试bdestroy

假设你有一个数据集 a['aaData'] 并且你想清空数据表然后用 a['aaData'] 填充它

$('#datatable-table').dataTable({
                "sAjaxDataProp": "",
                "bProcessing": true, 
                "aaData": data,
                 bDestroy:true,
                    "aoColumnDefs": [
                        { "mData": "id"},
                        { "mData": "bandname"},
                        { "mData": "members"},
                        { "mData": "bio"},
                        { "mData": "songlist"}
                ]
            });

【讨论】:

  • 我已经编辑了答案,如果您更新的数据集直接来自某个 ajax 调用,那么您可以删除 aaData:(a['aaData']) 行并继续
  • 我已在网站 (bandsly.com/index3.html) 上实施了您的建议。如果在控制台查看,a 没有定义。
  • 我没有遇到同样的错误,你能再看看我的代码吗,我们讨论后我又编辑了一次。
  • 谢谢 - 我已经部署了更改。控制台给了我“未捕获的参考错误。数据未定义”的错误。
  • 听着,你想用一些-data-初始化数据表,我的意思是把-data-放在这个'data'变量中,然后试着做一个小提琴来提供更多的理解,以便我可以编辑代码也是如此
【解决方案3】:

这是最合适的例子...

  1. 用你想改变的变量在函数下初始化数据表,就像这里我正在尝试使用 AJAX LOAD
 function dbt(url){
  //===== Datatables =====//
  oTable = $('#datatable').dataTable({
      "serverSide": true,
      "ajax":url
  })}
  1. 完成上述所有处理后,只需使用您自己选择的变量自动加载函数

$(document).ready(function() {

var url='../tbdata/get_users.php';

  dbt(url);
} );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2023-03-29
    • 1970-01-01
    • 2013-07-01
    • 2011-03-13
    • 1970-01-01
    相关资源
    最近更新 更多