【问题标题】:Jquery - Bootstrap DataTable Refresh issue DATAJquery - 引导数据表刷新问题数据
【发布时间】:2020-07-17 01:23:53
【问题描述】:

您能帮我解决这个与 Bootstrap - Jquery Table 相关的问题吗?

我想从数据库服务器以 JSON 格式(通过 ajax 调用)检索数据到引导 DataTable,然后仅重新加载 DataTable。

这是代码,一旦按下点击按钮(搜索)就会运行:

var prova = null;

$(document).ready(function(){
        prova = $('#prova_table').DataTable({
            paging: true,
            searching: false
        });
        prendivalori();
       });  


function prendivalori() {
       $("#bottone").click(function() {
        $("#prova_table").empty();
        var sopravvissuti = $('#sopravvissuti').val();
        var vita = $('#vita').val();
        var provincia = $('#provincia').val();
        var campi = $('#campi').val();
        var table = $('#prova_table');

        $.ajax({
                type: 'GET',
                url: './php/select.php',
                data: {'sopravvissuti': sopravvissuti, 'vita': vita, 'provincia':provincia, 'campi':campi},
                dataType: 'json',
                success: function(data) {
                                    table.append("<thead><tr><th class='th-sm'>Cognome</th><th class='th-sm'>Nome</th><th class='th-sm'>Sesso</th></tr></thead>");
                                    console.log(data);
                                    len=data[0].length;
                                    table.append("<tbody>");
                        for(i=0; i< len; i++){

                            temp=data[0][i]
                            table.append("<tr><td>" + temp[1] + "</td><td>" + temp[0] + "</td><td>" 
                            + temp[2] +"</td></tr>");
                        }
                                                table.append("</tbody>");

                                                $('#prova_table').DataTable().ajax.reload();

                        }

                ,
                error: function(data) {
                        alert('Assicurarsi di aver selezionato tutte le caselle');

                }
        });

    });
};

这是单击按钮数据后收到的错误消息...

DataTables 警告:表 id=prova_table - JSON 响应无效。有关此错误的更多信息,请参阅http://datatables.net/tn/1

从服务器接收到的 json 数据是正确的,因为我们可以在表格中正确看到它们,但是我们无法使用 Bootstrap DataTable 提供的所有功能,例如 Pagination search条目数....

我正在使用所有更新的链接来运行网站..

ETC ECT

这是一个 JSON 响应:

非常感谢您的所有支持 祝你今天过得愉快 安德烈亚

【问题讨论】:

  • 你能在mocky.io这里模仿json响应并分享链接吗?还是将其添加到问题本身?
  • @supercool,是的!添加了来自 Chrome 控制台的屏幕截图...我希望它可以帮助:)
  • 从后端发送对象数组(每个对象应该有键作为列名,值作为值)而不是数组数组。而且在成功功能中你不需要做 table.append 和其他类似的东西。如果您以上述正确格式接收数据,则只需使用 $("yourtableid").DataTable({data:response});

标签: javascript json ajax twitter-bootstrap datatables


【解决方案1】:

你不应该在 table 上做 table.append() 和任何其他直接的 dom 更改。 如果您以正确的方式将选项传递给 Jquery 数据表,它将为您执行此操作。

这样做。

如果可用,首先使用列名初始化如下所示的数据表

var table = $("#myTable").DataTable({
    data:[],
    columns: [
                { "data": "Cognome"  },
                { "data": "Nome" },
                { "data": "Sesso" },
                { "data": "data di nascita" }
    ],        
});

在单击按钮时,执行 get ajax 调用,并在完成回调中清除表 table.clear().draw();table.rows.add(result).draw() 以将数据呈现到表中。

    $.ajax({
            url: "https://www.mocky.io/v2/5e89289e3100005600d39c17",
            type: "get",
        }).done(function (result) {
            table.clear().draw();
            table.rows.add(result).draw();
         })

JSFiddle : https://jsfiddle.net/k0d1mzgL/

var table = $("#myTable").DataTable({
    data:[],
    columns: [
           { "data": "Cognome" ,"title": "Cognome"},
{ "data": "Nome" ,"title": "Nome"},
{ "data": "Sesso" ,"title": "Sesso"},
{ "data": "data di nascita","title": "data di nascita" }
    ],        
});
$("#getDataBtn").click(function(){
    $.ajax({
            url: "https://www.mocky.io/v2/5e89289e3100005600d39c17",
            type: "get",
        }).done(function (result) {
            table.clear().draw();
            table.rows.add(result).draw();
            }).fail(function (jqXHR, textStatus, errorThrown) { 
               //if failed
               console.log("Due to https issue,this request cant be made, go check jsfiddle link provided in answer");
            });
});
<link href="//cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css" rel="stylesheet" >
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
<table id="myTable">

</table>
<button id="getDataBtn">Get data</button>

【讨论】:

  • @sn4k 你检查我的解决方案了吗?
  • 您好 Supercool,是的,我现在已经完成了对代码的修改 :) 非常感谢您的大力支持! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
相关资源
最近更新 更多