【问题标题】:DataTables Reload数据表重新加载
【发布时间】:2019-12-30 12:50:41
【问题描述】:

嗯,我正在尝试为这项工作做点什么,我需要一个使用 DataTables 库制作的表格来不断更新,例如每 10 秒更新一次。

我面临着非常无聊的问题,我想做的是在 API 上重新加载,如官方网站 此处 所述:https://datatables.net/reference/api/ajax.reload()

我正在使用这个:

    function AutoReload1()
    {
        var table = $('#OperationFix').DataTable({
            ajax: "data.json"
        });

        setInterval(function () {
            table.ajax.reload();
        }, 5000);

        //loadOrdersFix();
        //alert('Testing')

    }

然后它向我返回以下错误:

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

【问题讨论】:

  • 这个问题被标记为 C 有什么特别的原因吗?
  • 虽然它是在 javascript 中完成的,但我目前正在 MVC 中做应用程序,我认为这将是一个重要的细节,如果我错了,我很抱歉
  • 那么....您是否访问了该 URL 并阅读了错误文档?看起来相当广泛且写得很好。
  • 是的,它的扩展名与解决方案有关,但我试过了,没有,根据文档,错误本身是否是由于无法调用表+ of 1 time, 只能启动 1x

标签: javascript html datatables


【解决方案1】:

您的代码似乎没问题。

但是当AutoReload1(); 已经加载后以某种方式再次调用时,就会发生您提到的错误。

要解决此问题,您需要添加 destroy: true 或找出为什么多次调用 AutoReload1()

function AutoReload1()
{
    var table = $('#OperationFix').DataTable({
        ajax: "data.json",
        destroy: true
    });

    setInterval(function () {
        table.ajax.reload();
    }, 5000);

}

工作Fiddle

编辑 1:

根据您的小提琴,您已经定义了 Datatable 2 个位置,因此在两个位置添加 destroy:true

 var table = $(OperationFixTableId).DataTable({
       dom: 'Bfrtip',
       pageLength: 1000,
       columns: columns,
       data: OperationFix,
       destroy: true

【讨论】:

  • 您好 Fiddle,我测试了“destroy:true”所说的内容,结果发现现在更改的错误仅表明他可以使用带给我的结果加载表,这是因为当您使用“destroy:true”他丢失了在我的情况下将是开始日期和结束日期的参数。我想知道您是否知道该怎么做以及您是否可以帮助我
  • 这个烦人的错误我已经有一段时间了,从官网显示的情况来看似乎很容易解决,只需选择现有的表,与加载哪个文件交谈并重新加载。这个项目是为了我的工作,所以它是专业用途,对我来说很重要,在此先感谢:)
  • 为了获得帮助,您需要提供导致问题的实际代码。我在您的问题中没有看到任何开始日期和结束日期。请创建一个示例小提琴并分享链接jsfiddle.net
  • 没关系,这对我来说很难,因为代码真的很大而且公司的,今天我不在了,星期四我负责。
  • 为了帮助找出AutoReload1() 被多次调用的原因,您可以尝试将console.trace('optional message here') 放入函数中。这将为您提供在此之前调用的函数列表。
【解决方案2】:

HTML:

    <div class="container">
        <table id="OperationFix" class="display" width="100%">
            <tfoot>
                <tr>
                    <th style="text-align:right"></th>
                    <th style="text-align:right"></th>
                    <th style="text-align:right"></th>
                    <th style="text-align:right"></th>
                    <th style="text-align:right"></th>
                    <th style="text-align:right"></th>
                    <th style="text-align:right"></th>
                    <th style="text-align:right"></th>
                </tr>
            </tfoot>
        </table>
    </div>

JS:

   var OperationFixTableId = $('#OperationFix');  

    var refreshIntervalId = setInterval;

    function AutoReload1()
    {              

        var OperationFixTableId = $('#OperationFix').DataTable({
            ajax: 'data.json',
            destroy: true
        });

        setInterval(function () {
            OperationFixTableId.ajax.reload();
        }, 5000);

    }


    function AutoReload() {
        var checkbox = document.getElementById('myonoffswitch');


        if (checkbox.checked == true)
        {
            AutoReload1();
        }

        if (checkbox.checked == false)
        {
            clearInterval(refreshIntervalId);
        }
    }

我目前正在尝试执行此操作,但是当我对其进行测试时,我发现他尝试使用“data.json”加载我的 DataTable,我希望他使用他在银行中的内容加载它我可以这样做,我的连接就在这里:

function GetOrdersFix(startDate, endDate, status, type, onSuccess, onError) { var uri = executionContext.settings.GetOrdersFix;

var data = {
    startDate: new Date(startDate).toJSON(),
    endDate: new Date(endDate).toJSON()
};

if (status) { data.status = status; }

if (type) { data.type = type; }



console.info('Loading orders fix from ' + uri);

//Call to server API
$.ajax({
    type: 'GET',
    url: uri,
    data: data,
    success: function (responseData, status, jqXHR) {
        onSuccess(responseData);
    },
    error: function (jqXHR, status, errorThrown) {
        onError(status + ',' + errorThrown + ',' + jqXHR.responseText);
    }
});

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    相关资源
    最近更新 更多