ajax
从 Ajax 源加载表格内容数据。
描述
DataTables 可以从多个来源获取要在表格主体中显示的数据,包括使用此初始化参数从 Ajax 数据源获取数据。与其他动态数据源一样,可以使用数组或对象作为每行的數據源,并使用 columns.data
从特定的对象属性读取数据。
ajax
属性有三种不同的操作模式,具体取决于它的定义方式。它们是
string
- 设置应从中加载数据的 URL。object
- 定义jQuery.ajax
的属性。function
- 自定义数据获取函数
.NET
JSON 负载通常作为字符串包装,并作为 .NET 环境(某些 - 不是全部!)中的 d
参数返回。从 DataTables 2.1 开始,我们自动处理这种情况,对 JSON 字符串进行解码,并将其用作预期负载。
类型
string
- 描述
在最简单的情况下,
ajax
,当作为字符串给出时,只会简单地从给定的远程文件加载数据。请注意,DataTables 期望表格数据是对象data
参数中的项目数组(如果您的数据格式不同,请使用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 获取的搜索结果,这将很有用。
object
- 描述
作为对象,
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 开始,
xhr
事件将在使用函数作为ajax
时触发(即使没有 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')));
}
});
相关
以下选项与之直接相关,在您的应用程序开发中也可能有用。