ajax
從 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 之前,不會觸發任何事件。- 參數
名稱 類型 可選 1 data
否 要發送到伺服器的資料
2 callback
否 取得所需資料後必須執行的回呼函式。該資料應作為唯一參數傳遞到回呼中
3 settings
否 DataTables 設定物件
範例
通過 Ajax 從檔案取得 JSON 資料。
new DataTable('#myTable', {
ajax: 'data.json'
});
通過 Ajax 從檔案取得 JSON 資料,使用 dataSrc
將 data
更改為 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')));
}
});
相關
以下選項直接相關,也可能在您的應用程式開發中很有用。