异步数据(ajax.data)

起始版本号: 1.10.0

增加或修改通过Ajax提交到服务端的请求数据

说明

当向服务器发出一个ajax请求,Datatables将会把服务器请求到的数据构造成一个数据对象。数据包含的内容取决于Datatables操作的处理模式:

ajax.dataOption 将额外的参数添加到请求或修改需要被提交的数据对象

实际上他是参考jQuery的ajax.data属性来的,他能添加额外的参数传给服务器。 Datatables在此基础上还提供了一个函数,以便Datatables在请求服务器的时候可以处理这些数据

数据类型

对象(object)

描述:

如果当做一个对象,ajax.dataDT 选项用于扩展Datatables构造内部对象,将额外的,静态的参数传递给服务器。对于动态的处理,使用 ajax.dataOption 作为一个函数(见下文)。

函数(function) ajax.data( data )

描述:

作为一个函数, ajax.dataOption 选项可以用于修改由Datatables内部构造的原始数据或者完全取代这些,然后ajax请求到服务器

在每次Datatables请求服务器时都可以动态计算提交的参数,比如你可以添加一个文本框当做过滤的条件

参数:
返回:

If there is no return value from the function (i.e. undefinedJS ) then the original data object passed into the function by DataTables will be used for the request (the function may have manipulated its values).

If an object is returned, then that object will be used as the data for the request. It will not be merged with the original data object constructed by DataTables before being sent.

If a string is returned, this string it will be used in the Ajax request body rather than individual HTTP parameters being sent. This is particularly useful for sending JSON encoded data in the request body so the server can decode it directly, rather than individual HTTP parameters being sent. See example below for how to use JSON.stringify() to achieve this.

示例

添加一个静态值,来提交额外的参数(user_id)

$('#example').dataTable( {
  "ajax": {
    "url": "data.json",
    "data": {
        "user_id": 451
    }
  }
} );

通过操作数据对象添加数据请求(函数没有返回)

$('#example').dataTable( {
  "ajax": {
    "url": "data.json",
    "data": function ( d ) {
        d.extra_search = $('#extra').val();
    }
  }
} );

添加数据请求(函数有返回)

$('#example').dataTable( {
  "ajax": {
    "url": "data.json",
    "data": function ( d ) {
      return $.extend( {}, d, {
        "extra_search": $('#extra').val()
      } );
    }
  }
} );

以json格式提交

$('#example').dataTable( {
  "ajax": {
    "url": "data.json",
    "contentType": "application/json",
    "data": function ( d ) {
      return JSON.stringify( d );
    }
  }
} );

动态传参数

//初始化表格
var oTable = $("#example").DataTable({
    ajax: {
        url: "dataList.action",
        data: {
            args1: "我是固定传参的值,在服务器接收参数[args1]"
        }
    }
});

//当你需要多条件查询,你可以调用此方法,动态修改参数传给服务器
function reloadTable() {
    var name = $("#seName").val();
    var admin = $("#seAdmin").val();
    var param = {
        "obj.name": name,
        "obj.admin": admin
    };
    oTable.settings()[0].ajax.data = param;
    oTable.ajax.reload();
}

相关

下面的选项是直接相关的,也可能是您的应用程序的开发非常有用。

http://datatables.net/reference/option/ajax.data

Translation from DataTables.net, with permission