{hero}

ajax.data

自:DataTables 1.10

在 Ajax 请求时添加或修改提交到服务器的数据。

描述

在向服务器发出 Ajax 请求时,DataTables 会在内部构造一个 data 对象,其中包含它需要发送到服务器的请求数据。此数据包含的内容取决于 DataTables 操作的处理模式

  • 对于客户端处理,不会将任何其他数据提交到服务器
  • 对于服务器端处理(serverSide),提交 draw 请求参数 - 请参阅服务器端处理手册

ajax.data 选项提供了向请求添加其他数据或根据需要修改正在提交的数据对象的能力。

原则上,它的操作方式与 jQuery 的 $.ajax.data 属性完全相同,因为它可以表示为具有要提交的参数和值的对象,但 DataTables 通过还为它提供作为函数的能力对其进行了扩展,以允许数据在每次 Ajax 请求重新评估(见上文)。

类型

对象

描述

作为对象,ajax.data 选项用于扩展 DataTables 在内部构造以提交到服务器的数据对象。这提供了一种简单的方法,用于向发送到服务器的数据添加其他静态参数。对于动态计算的值,请将 ajax.data 用作函数(见下文)。

函数 ajax.data( data, settings )

描述

作为函数,ajax.data 选项可用于修改 DataTables 在 Ajax 请求时提交到服务器的数据,方法是操作 DataTables 在内部构造的原始数据对象,或将其完全替换。

这样就可以在 Ajax 请求时向服务器提交其他信息,函数在每次 Ajax 请求时执行,从而可以动态计算值。例如,可以从文本输入字段中读取值以用作其他搜索选项。

参数
返回

如果函数没有返回值(例如 undefined),则 DataTables 传递给函数的原始数据对象将用于请求(此函数可能已处理这些值)。

如果返回的是对象,则会将该对象用作请求的数据。在将对象发送之前,不会与 DataTables 构造的原始数据对象合并。

如果返回的是字符串,则此字符串将用于 Ajax 请求正文,而不会发送各个 HTTP 参数。这对于在请求正文中发送 JSON 编码数据特别有用,以便服务器可以直接对其进行解码,而不是发送各个 HTTP 参数。请参见下面的示例,了解如何使用 JSON.stringify() 实现此目的。

示例

向要提交的数据中添加一个附加参数(在本例中为 user_id),此参数为一个静态值

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		data: {
			user_id: 451
		}
	}
});

通过操纵数据对象向请求中添加数据(函数没有返回值)

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		data: function (d) {
			d.extra_search = $('#extra').val();
		}
	}
});

向请求中添加数据(返回对象)

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		data: function (d) {
			return $.extend({}, d, {
				extra_search: $('#extra').val()
			});
		}
	}
});

以 JSON 格式在请求正文中提交数据

new DataTable('#myTable', {
	ajax: {
		url: 'data.json',
		contentType: 'application/json',
		type: 'POST',
		data: function (d) {
			return JSON.stringify(d);
		}
	}
});

相关信息

下列选项直接相关,也可能对您的应用程序开发有用。