stateLoadCallback
定义加载保存状态的位置和方式的回调函数。
描述
使用此回调函数,您可以定义表格状态的加载位置和方式。默认情况下,DataTables 将从 localStorage
或 sessionStrorage
加载,但对于更永久的存储,您可以将状态存储在服务器端数据库中。
在 DataTables 1.10.13 之前,此方法必须同步执行,即状态将由函数返回。从 1.10.13 开始,可以通过 Ajax 或任何其他异步方法异步加载状态并执行回调函数,并将加载的状态传递给回调函数。
为了保持向后兼容性,状态仍然可以同步返回。要使用回调方法,只需从您的 stateLoadCallback
函数中不返回值。有关这两种用例的示例,请参见下文。
请注意,此回调与 stateSaveCallback
配合使用。此回调在表格重新加载时从存储中加载状态,而 stateSaveCallback
保存状态。
类型
function stateLoadCallback( settings, callback )
- 参数
名称 类型 可选 1 settings
否 DataTables 设置对象
2 callback
否 自 1.10.13 起:当状态数据准备就绪时应执行的回调函数,如果状态数据通过 Ajax 或其他异步方法加载。如果要使用此选项,
stateLoadCallback
方法必须返回undefined
(即不要返回任何内容)!- 返回值
如果数据同步加载,则返回值应为加载的状态(如果未加载任何数据,则为
null
)。如果数据将异步加载(例如,通过 Ajax),则应返回
undefined
(不要使用 return 语句!),并在状态加载完成后调用回调函数。请注意,此选项需要 DataTables 1.10.13 或更高版本。
示例
通过 Ajax 从服务器加载状态(1.10.13 或更高版本)
new DataTable('#myTable', {
stateSave: true,
stateLoadCallback: function (settings, callback) {
$.ajax({
url: '/state_load',
dataType: 'json',
success: function (json) {
callback(json);
}
});
}
});
通过 Sjax 从服务器加载状态(1.10.13 之前)
new DataTable('#myTable', {
stateSave: true,
stateLoadCallback: function (settings) {
var o;
// Send an Ajax request to the server to get the data. Note that
// this is a synchronous request since the data is expected back from the
// function
$.ajax({
url: '/state_load',
async: false,
dataType: 'json',
success: function (json) {
o = json;
}
});
return o;
}
});
相关
以下选项与之直接相关,在您的应用程序开发中也可能有用。