{hero}

ajax

自:DataTables 1.10 起

從 Ajax 來源載入表格內容的資料。

說明

DataTables 可以從多種來源取得要在表格主體中顯示的資料,包括使用此初始化參數從 Ajax 資料來源取得。如同其他動態資料來源,陣列或物件可以用於每一列的資料來源,並使用 columns.data 從特定的物件屬性中讀取。

ajax 屬性有三種不同的操作模式,具體取決於它的定義方式。分別為:

  • string - 設定應該從哪裡載入資料的 URL。
  • object - 定義 jQuery.ajax 的屬性。
  • function - 自訂資料取得函式

.NET

JSON 酬載通常會被包裝成字串,並在 .NET 環境中 (有些會,有些不會!) 作為另一個 JSON 物件中的 d 參數傳回。從 DataTables 2.1 開始,我們會自動處理此問題,解碼 JSON 字串並將其用作預期的酬載。

類型

字串

說明

在其最簡單的形式中,ajax,當以字串形式給定時,將僅從給定的遠端檔案載入資料。請注意,DataTables 期望表格資料是物件 data 參數中的項目陣列 (如果您的資料格式不同,請使用 ajax 作為物件的 ajax.dataSrc 選項)

{
    "data": [
        // row 1 data source,
        // row 2 data source,
        // etc
    ]
}

DataTables 可以使用幾乎任何格式的物件或陣列作為每一列的資料來源,通過使用 columns.data 選項。預設使用陣列資料來源。

簡單範例

new DataTable('#myTable', {
  "ajax": "data.json"
} );

從 DataTables 2 開始,此選項可以給定為空字串,以向 DataTables 指示它是 Ajax 來源表格,但在給定 URL 之前不發出 Ajax 請求,可以使用 ajax.url().load() 進行此操作。例如,如果您使用 DataTables 來顯示通過 Ajax 取得的搜尋結果,這會很有用。

物件

說明

作為物件,ajax 物件會傳遞給 jQuery.ajax,允許對 Ajax 請求進行精細控制。DataTables 有許多預設參數,您可以使用此選項覆寫這些參數。請參考 jQuery 文件以取得可用選項的完整說明,儘管以下參數在 DataTables 中提供了其他選項或需要特別考量:

  • data (ajax.data) - 與 jQuery 一樣,可以將 data 作為物件提供,但作為擴充功能,也可以將其作為一個函式提供,以操作 DataTables 發送到伺服器的資料。該函式採用一個參數,即一個物件,其中的參數是 DataTables 已準備好發送的名稱/值對。可以傳回一個物件,該物件將用作發送到伺服器的資料 (因此,如果您希望使用 DataTables 設定的參數,您必須將它們合併到您的函式中),或者您可以將項目新增到傳入的物件,而無需從函式中傳回任何內容。這取代了 DataTables 1.9- 中的 fnServerParams
  • dataSrc (ajax.dataSrc) - 預設情況下,DataTables 在從 Ajax 來源或用於伺服器端處理取得資料時,會查找屬性 data (或與 DataTables 1.9- 相容的 aaData) - 此參數允許通過兩種不同的形式更改該屬性:
    • 作為字串 - 定義要讀取的物件屬性。請注意,如果您的 Ajax 來源只是傳回要顯示的資料陣列,而不是物件,請將此參數設定為空字串。此外,您可以使用 Javascript 點式物件符號來取得多層物件/陣列巢狀結構的資料來源。
    • 作為函式 - 作為函式,它採用單一參數,即從伺服器傳回的 JSON,可以根據需要進行操作。函式的傳回值將作為 DataTables 的表格資料來源。
    • 這取代了 DataTables 1.9- 中的 sAjaxDataProp
  • success - 不得覆寫,因為它在 DataTables 內部使用。要操作/轉換伺服器傳回的資料,請使用 ajax.dataSrc (上方),或將 ajax 作為函式使用 (下方)。

簡單範例

new DataTable('#myTable', {
  "ajax": {
    "url": "data.json",
    "type": "POST"
  }
} );

function ajax( data, callback, settings )

說明

作為函式,Ajax 呼叫由您自己決定,允許完全控制 Ajax 請求。實際上,如果需要,可以使用 Ajax 以外的方法來取得所需的資料,例如 Web 儲存或 Firebase 資料庫。

從資料來源取得資料後,應使用單一參數呼叫第二個參數 (此處為 callback) 傳入 - 用於繪製表格的資料。

簡單範例

new DataTable('#myTable', {
  "ajax": function (data, callback, settings) {
    callback(
      JSON.parse( localStorage.getItem('dataTablesData') )
    );
  }
} );

請注意,從 DataTables 1.10.6 開始,當將函式用於 ajax 時,將觸發 xhr 事件 (即使沒有 Ajax 請求)。在 1.10.6 之前,不會觸發任何事件。

參數

範例

通過 Ajax 從檔案取得 JSON 資料。

new DataTable('#myTable', {
	ajax: 'data.json'
});

通過 Ajax 從檔案取得 JSON 資料,使用 dataSrcdata 更改為 tableData (即 { tableData: [ ...data... ] })

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		dataSrc: 'tableData'
	}
});

通過 Ajax 從檔案取得 JSON 資料,使用 dataSrc 從純陣列而不是物件中的陣列讀取資料

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		dataSrc: ''
	}
});

將請求作為 POST 發送

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		type: 'POST'
	}
});

將資料新增到請求,通過擴充預設資料傳回物件

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		data: function (d) {
			return $.extend({}, d, {
				extra_search: $('#extra').val()
			});
		}
	}
});

通過操作資料物件將資料新增到請求

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		data: function (d) {
			d.extra_search = $('#extra').val();
		}
	}
});

操作伺服器傳回的資料 - 將連結新增到資料 (請注意,這可以使用欄的 render 來完成 - 這只是如何操作資料的一個簡單範例)。

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		dataSrc: function (json) {
			for (var i = 0, ien = json.length; i < ien; i++) {
				json[i][0] = '<a href="/message/' + json[i][0] + '>View message</a>';
			}
			return json;
		}
	}
});

從 localStorage 取得資料 (可以與用於新增、編輯和刪除列的表單介面)。

new DataTable('#myTable', {
	ajax: function (data, callback, settings) {
		callback(JSON.parse(localStorage.getItem('dataTablesData')));
	}
});

相關

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