{hero}

ajax

自:DataTables 1.10 起

从 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 之前,不会触发任何事件。

参数

示例

通过 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')));
	}
});

相关

以下选项与之直接相关,在您的应用程序开发中也可能有用。