jQuery Datatables.net - 刷新表 - 获取null sAjaxSource

时间:2013-07-10 10:47:35

标签: javascript jquery datatables

我有以下函数可以更新我的ASP.NET站点母版页中的数据表:

    function refreshTable(oTable) {
        var table = $(oTable).dataTable();
        var oSettings = table.fnSettings();

        //Retrieve the new data with $.getJSON. You could use it ajax too
        $.getJSON(oSettings.sAjaxSource, null, function (json) {
            table.fnClearTable(this);

            for (var i = 0; i < json.aaData.length; i++) {
                table.oApi._fnAddData(oSettings, json.aaData[i]);
            }

            oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
            table.fnDraw();
        });
    }

如果将附件添加到站点,则调用此函数来刷新表 - 这是应该刷新的数据表设置。

var DeleteClicked = false;
var oTable;

$(document).ready(function () {
 oTable = $('#infoTable').dataTable({
        "aaSorting": [[6, "desc"]],
        "bProcessing": true,
        "sAjaxSource": '/Web/Handlers/infoTableHandler.ashx',
        "aoColumns": [
            { "mData": "ID", "bVisible": false },
            { "mData": "Type" },
            { "mData": "Received" },
            {
                "mData": "Action", "sWidth": "100px", "mRender": function (data, type, row) {
                    var id = row.ID;
                    return "<input type=button id=" + id + " onclick='DeleteFile(" + id + ")' class=buttonBlue value=Delete />";
                },
            },
            { "mData": "IsImage", "bVisible": false }
        ],
        "bDeferRender": true,
    });

但是 - 如果我在Chrome中打开开发人员工具,我会收到一条错误消息,说sAjaxSource为空,所以我无法从中获取值 - 所以oSettings为null然后我无法访问sAjaxSource - 任何人在这里看到任何错误?

1 个答案:

答案 0 :(得分:1)

您基本上是在refreshTable的第一行重新初始化您的dataTable。请尝试改为:

function refreshTable() {
        var oSettings = oTable.fnSettings();
        ...
}

并直接引用全球oTable而不是您当地的table变量