項目使用 DataTables,調用 table.ajax.reload() 報錯「未定義 ajax」,fnDraw() 無反應。
| 版本 | 初始化對象 | 刷新 API | 數據源屬性 |
|---|---|---|---|
| 1.9.x | oTable = $('#tbl').dataTable() (小寫 d) | oTable.fnDraw() / oTable.fnReloadAjax() (插件) | sAjaxSource / fnServerData |
| 1.10+ | table = $('#tbl').DataTable() (大寫 D) | table.ajax.reload() | ajax (對象/字符串/函數) |
提問者代碼混用了 1.9 風格:
.DataTable() 但配置 sAjaxSource、fnServerData (1.9 參數)。oTable1.ajax.reload() (1.10 API)。ajax 屬性未正確初始化,調用報錯。let table = $('#sample-table-2').DataTable({
ajax: {
url: 'https://.../vehicleBaseInfo/searchByEnterprise',
type: 'GET',
data: function(d) { return $.extend({}, d, {enterpriseId: 1}); },
dataSrc: 'data'
},
columns: [
{ data: 'VehicleID' },
{ data: 'PlateNumber' },
// ...
],
// 其他配置...
});
// 刷新
$('#acecom').on('click', () => table.ajax.reload());
let oTable = $('#sample-table-2').dataTable({ // 小寫 d
sAjaxSource: '...',
fnServerData: (sSource, aoData, fnCallback) => {
$.getJSON(sSource, aoData, fnCallback);
},
// ...
});
// 刷新
$('#acecom').on('click', () => oTable.fnDraw()); // 或 fnReloadAjax() 插件
DataTable() 返回 API 實例,小寫 d dataTable() 返回 jQuery 對象,二者方法完全不同。jquery.dataTables.min.js (1.9) vs datatables.min.js (1.10+)。