如何在DataTables中动态设置ajax数据?

我正在使用DataTables 1.10.15并已阅读有关如何在ajax调用中指定data属性的内容,如下所示:

 $(document).ready(function() { var MyTable = $('#example').DataTable( { "processing": true, "serverSide": true, "ajax": { "url": "scripts/server_processing.php", "data": function ( d ) { d.myKey = "myValue"; // d.custom = $('#myInput').val(); // etc } } } ); } ); 

但是,此示例只具有硬编码值(或形成输入值,如$('#myInput').val() )。

我有一个应用程序,我需要能够传递各种不同的数据对象,然后运行ajax调用。

我无法看到这是如何可能的,并查看了以下https://datatables.net/examples/server_side/custom_vars.html 。

我想这样做的原因是因为我正在构建一个具有多种不同forms的应用程序。 我需要选择要作为数据发送的表单 ! 当用户以特定forms输入术语时,我想将表单数据传递给我的ajax脚本,然后让DataTables重绘表格(我可以使用.draw()方法):

 MyTable.draw(); 

但是,我不明白如何动态指定data: 。 我可以在ajax调用中做这样的事情:

 "ajax": { "url" : "scripts/server_processing.php", "data" : function ( d ) { d.primarySearch = $('#form1').serialize(), d.secondSearch = $('#form2').serialize(), d.thirdSearch = $('#form3').serialize(), } } 

但是,如果我正在进行搜索的数据是#form1 ,我只想传递那些数据,而不是来自#form2#form3的数据。 但由于每次都有所不同,我需要能够说出哪些表单传递给data: object。

我也在使用服务器端处理。 您可以按以下代码调用它:

这是针对静态表单id

  ajax: { "url": 'api/v1/datatable/' + method, "type": "POST", "data": jQuery('#frmid').serialize(), }, 

这是动态表单ID

 var form_id = 'form1' ; $(document).ready(function() { var MyTable = $('#example').DataTable( { "processing": true, "serverSide": true, "ajax": { "url": "scripts/server_processing.php", "data": jQuery('#' + form_id).serialize(), } } ); } ); $(document).on('keyup','.search_text',function(){ form_id = $(this).closest('form').attr('id'); MyTable.draw(); }) 

希望这对你有所帮助。

如果您只需要在代码中稍后更改数据表的ajax初始URL,则可以使用:

 tbl.ajax.url("new url"); 

API文档