xhr
Ajax 事件 - 在 Ajax 请求完成后触发。
说明
当使用 Ajax 数据时,了解 DataTables 何时完成数据加载往往很有用,因此你可以将数据处理成 DataTables 根据其配置期望的格式 (columns.data
),或使用服务器 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'
});
相关
以下选项直接相关,并且可能对你的应用程序开发也有用。