javascript - DataTables 成功回调替代方案

标签 javascript jquery datatable

我正在尝试将 DataTables 与成功回调一起使用。因为我想在用户输入的创建 DataTable 的值有错误时向用户发出警告。

不幸的是,DataTables 需要自己的成功回调,因此我不能重载它。

目前代码是:

configurationBlockChart = $('#blockSearchTable').DataTable(
{
    processing: true,
    serverSide: true,
    stateSave: true,
    bDestroy: true,
    ajax: 
    {
        type: 'GET',
        url:"ajax_retreiveServerSideBlockNames/",
        data:
        {
            'csrfmiddlewaretoken':csrftoken,
            'username':username
        }
    },
    rowCallback: function(row, data)
    {
        if ($.inArray(data.DT_RowId, blockSelected)!== -1)
        {
            $(row).addClass('selected');
        }
    },
});

此 Ajax Get 返回的数据是数据行。

但是有可能返回的数据返回的是invalid,没有返回行

我尝试在rowCallBack之前添加成功:

success: function(response)
{
     if(response.status == "invalid")
          //then inform user
}

也尝试过使用 fnDrawCallBack

fnDrawCallback: function(settings, response)
{
    console.log("Hello World!");
    if(response.status == "invalid")
    {
        $('#invalid').modal("show");
        $('#usernameSearch').modal("show");
    }
}

但是,fnDrawCallBack 只会在返回行时调用。

问题是有时没有返回任何行,javascript代码给出了一个异常。

不过,我可以 try catch ,但我仍然希望我的服务器为 javascript 代码提供 json 状态。

编辑:使用 xhr,它可以捕获无效响应,同时不会干扰 ajax 的成功功能。

$('#chartSearchUsername').click(function(event)
{
    $('#chartConfigModal').modal("hide");
    $('#usernameSearch').modal("show");

    configurationUserChart = $('#userSearchTable').DataTable(
    {
        processing: true,
        serverSide: true,
        stateSave: true,
        bDestroy: true,
        ajax: 
        {
            type: 'GET',
            url:"ajax_retreiveServerSideUsernames/",
            data:
            {
                'csrfmiddlewaretoken':csrftoken
            },
        },
        rowCallback: function(row, data)
        {
            if ($.inArray(data.DT_RowId, userSelected)!== -1)
            {
                $(row).addClass('selected');
            }
        },
    })
    .on('xhr.dt', function(e, settings, response)
    {
        if(response.status == "invalid")
        {
            $('#invalid').modal("show");
            $('#usernameSearch').modal("hide");
        }
    });
}); 

最佳答案

$('#example').dataTable();

$('#example').on( 'xhr.dt', function () {
    console.log( 'Ajax call finished' );
} );

关于javascript - DataTables 成功回调替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26791421/

相关文章:

c# - 对数据表的 LINQ 查询返回不正确的结果

javascript - 使用javascript中的add方法更新数组

javascript - 一饮而尽 & 网页包 : ERROR in Entry module not found

javascript - c3 图表不显示轴上的变化

javascript - Jquery dom 元素引用问题

javascript - 如何通过来源获取图像?

jquery - 在页脚不起作用之前停止固定位置

javascript - 将通用逻辑提取到 JavaScript 中的可重用函数中

c# - Windows 窗体 : How to make the Form and a Grid Change Sizes Together?

jsf - 更改 p :graphicImage in p:dataExporter 的导出值