{hero}

stateLoadCallback

自 DataTables 1.10 起

定义加载保存状态的位置和方式的回调函数。

描述

使用此回调函数,您可以定义表格状态的加载位置和方式。默认情况下,DataTables 将从 localStoragesessionStrorage 加载,但对于更永久的存储,您可以将状态存储在服务器端数据库中。

在 DataTables 1.10.13 之前,此方法必须同步执行,即状态将由函数返回。从 1.10.13 开始,可以通过 Ajax 或任何其他异步方法异步加载状态并执行回调函数,并将加载的状态传递给回调函数。

为了保持向后兼容性,状态仍然可以同步返回。要使用回调方法,只需从您的 stateLoadCallback 函数中不返回值。有关这两种用例的示例,请参见下文。

请注意,此回调与 stateSaveCallback 配合使用。此回调在表格重新加载时从存储中加载状态,而 stateSaveCallback 保存状态。

类型

function stateLoadCallback( settings, callback )

参数
返回值

如果数据同步加载,则返回值应为加载的状态(如果未加载任何数据,则为 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;
	}
});

相关

以下选项与之直接相关,在您的应用程序开发中也可能有用。