{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;
	}
});

相關

以下選項直接相關,在您的應用程式開發中也可能很有用。