DataTables配置ajax的success/error后数据无法绑定问题
DataTable 自定义ajax回调后数据不渲染的原因
核心原因是jQuery DataTable的ajax配置项不支持直接覆盖原生的success/error回调:
DataTable初始化时会在内部封装ajax请求的成功处理逻辑,拿到返回数据后自动完成数据解析、行列绑定、DOM渲染全流程。你手动在ajax配置里写了success属性,会直接替换掉DataTable内部的成功回调,导致框架本身收不到接口返回的数据,自然不会执行渲染逻辑,哪怕你自己在回调里能正常打印返回值也没用。
正确的自定义逻辑写法
不要在ajax配置项里直接写success/error,用框架提供的官方扩展点实现自定义需求:
- 要在数据加载完成、表格渲染后打日志、做额外操作,用
initComplete配置项 - 要在数据绑定前修改返回的接口数据,在
dataSrc里写处理函数 - 要捕获请求错误做自定义提示,监听DataTable实例的
error.dt事件即可
示例代码:
var networkslisttab = $('#networkslisttable').DataTable({ "ajax": { "url": networkstoolboxURL, "dataType": "json", "dataSrc": '' }, "columns": [ { "data": 'reference_id', "width": '15%' }, { "data": 'name' }, { "data": 'num_points', "width": '15%' }, { "data": 'num_sections', "width": '15%' } ], "order": [[0, "desc"]], "processing": true, "autoWidth": false, "scrollY": "200px", "scrollX": true, "paging": false, "info": false, "language": { "processing": '<span style="width:100%;"><img src="/Content/icons/ajax-loader-orange-med.gif" /></span>' }, "searching": false, // 数据加载渲染完成后的自定义逻辑 "initComplete": function(settings, resData) { console.log('接口返回数据:', resData); // processing加载态会由框架自动关闭,不需要手动调用processing(false) } }); // 实例级错误捕获 $.fn.dataTable.ext.errMode = 'none'; $('#networkslisttable').on('error.dt', function(e, settings, techNote, errMsg) { console.log("网络列表加载错误:", errMsg); });
注意:你贴的移除回调后的代码中,
ajax配置块的闭合花括号后缺少逗号,实际运行时会报JS语法错误,需要补上。
正常渲染效果如下:
内容的提问来源于stack exchange,提问作者Samra
相关产品推荐
相关产品推荐

