xhr
Ajax 事件 - 在 Ajax 請求完成時觸發。
描述
當使用 Ajax 資料時,通常會需要知道 DataTables 何時完成資料載入,以便您可以根據其設定 ( columns.data
) 將該資料操作成 DataTables 預期的格式,或讓您可以使用伺服器傳回的 JSON 回應中的資料,用於頁面的其他部分。
此事件可以被視為 ajax.dataSrc
選項 (也可以用於操作和攔截 Ajax 請求的資料) 的事件補充。一般來說,您會希望在 dataSrc
回呼中執行資料操作,並使用事件來攔截資料。
請注意,此事件是在 DataTables 處理來自伺服器的新資料之前呼叫的,因此當此事件觸發時,傳回的資料將尚未繪製到頁面上。
此外,從 DataTables 1.10.7 開始,此事件會在 Ajax 請求完成時,無論成功或錯誤都會觸發 (即,無論 Ajax 請求的結果如何,都會觸發)。在 1.10.7 之前,它只會在請求成功時觸發。如果發生錯誤,事件處理常式的 json
參數 (第 3 個傳入的參數) 將會是 null
,而 xhr
參數 (第 4 個) 可以用來判斷錯誤詳細資訊 (如果需要的話)。
請注意,與所有 DataTables 發出的事件一樣,事件物件上會有一個 DataTables API 實例 (第一個參數)。此外,事件會以 dt
命名空間觸發。因此,要監聽此事件,您也必須使用 dt
命名空間,只需將 .dt
附加到您的事件名稱即可,如下面的範例所示。
類型
function function( e, settings, json, xhr )
- 參數
名稱 類型 選用 1 e
否 jQuery 事件物件
2 settings
否 DataTables 設定物件
3 json
否 伺服器傳回的資料。如果是由 Ajax 錯誤回呼觸發,則會是
null
。4 xhr
否 自 1.10.7 起: jQuery XHR 物件,可以用來存取底層的 Ajax 選項。
- 傳回
自 1.10.7 起,您可以傳回
true
,以告知 DataTables 如果您自己處理了錯誤狀況,則不應觸發其error
事件。
範例
預先處理伺服器傳回的資料
$('#example')
.on('xhr.dt', function (e, settings, json, xhr) {
for (var i = 0, ien = json.aaData.length; i < ien; i++) {
json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;
}
// Note no return - manipulate the data directly in the JSON object.
})
.DataTable({
ajax: 'data.json'
});
在另一個 DOM 元素中使用伺服器傳回的自訂屬性
$('#example')
.on('xhr.dt', function (e, settings, json, xhr) {
$('#status').html(json.status);
})
.DataTable({
ajax: 'data.json'
});
相關
以下選項是直接相關的,在您的應用程式開發中可能也很有用。