代码之家  ›  专栏  ›  技术社区  ›  Giox

当数据源是数组时,jQuery DataTables刷新网格

  •  0
  • Giox  · 技术社区  · 5 年前

    我有一个数据表,每次单击按钮时都应该刷新它。

    单击此按钮,我将使用ajax从API加载JSON流。数据将被处理,然后在数据表中设置为数据源。

    代码如下(为简单起见,已删除数据处理函数):

    function loadBulletins(categoryID) {
        $.ajax({
            url: '/api/bulletins.ashx',
            type: "POST",
            dataType: "json",
            data: { method: "getbulletins", iso3: iso3, catid:categoryID },
            success: function (response) {
                if ($.fn.dataTable.isDataTable('#bulletins-table')) {
                    table = $('#bulletins-table').DataTable();
                    table.clear();
                    table.data(response.data); //it seems like the update here doesn't work
                    table.draw();  //Table is not updated!!
                    //table.ajax.reload();  //it only works with ajax builtin
                }
                else {
                    $('#bulletins-table').DataTable({
                        deferRender: true,
                        "bLengthChange": false,
                        responsive: true,
                        "autoWidth": false,
                        "bInfo": false,
                        "bFilter": false,
                        data: response.data
                    });
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                console.log("loadBulletins Status: " + textStatus, "Error: " + errorThrown);
            }
        });
    }
    

    当用户单击一些按钮,传递不同的categoryID值,从而从API加载不同的数据时,调用上述函数。

    从API返回的数据如下:

    {
        "data": [
            ["8", "Emergency Assessment: Faryab Province", "2", "2018", "00065098/download/", "", "", "", ""],
            ["", "XXX/NRC Emergency Shelter Assessment: Khogiani", "12", "2017", "00050404/download/", "", "", "", ""],
            ["7", "Emergency Market Assessment: Sayad and Qush Tepa Districts", "9", "2017", "000022544/download/", "", "", "", ""],
            ["6", "Emergency Assessment Bulletin: Darz Ab District (Jawzjan) - Rapid Assessment", "7", "2017", "019342/download/", "", "", "", ""],
            ["5", "Emergency Flash Update: Bala Buluk District: Farah Province - Conflict Rapid Assessment", "3", "2017", "1236.pdf", "", "", "", ""],
            ["4", "Emergency Flash Update: Faryab Province - Conflict Rapid Assessment", "1", "2017", "754.pdf", "", "", "", ""],
            ["3", "Emergency Flash Update: Kohistan District (Faryab) - Conflict Rapid Assessment", "11", "2016", "8973.pdf", "", "", "", ""],
            ["2", "Emergency Flash Update: Farah Province - Conflict Rapid Assessment", "11", "2016", "88394.pdf", "", "", "", ""],
            ["1", "Emergency Flash Update: Kunduz Province - Conflict Rapid Assessment", "10", "2016", "88308.pdf", "", "", "", ""]
        ]
    }
    

    在第二次单击时,ajax调用起作用,我可以在network选项卡中看到响应,但是 . 我已经尝试了文档中的所有建议,但都不起作用,它们通常都是指datatable的ajax内置特性。

    1 回复  |  直到 5 年前
        1
  •  2
  •   imk    5 年前

    尝试

    table.rows.add(response.data); 
    

    相反

    table.data(response.data);
    

    或者销毁并重新初始化数据表。