我正在使用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。
我想这样做的原因是因为我正在使用几种不同的形式构建应用程序。我需要选择哪个表单作为数据发送!当用户以特定形式输入术语时,我想将那个表单数据传递给我的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:
对象的表单。
答案 0 :(得分:1)
我也在使用服务器端处理。 您可以按以下代码调用它:
这是针对静态表单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();
})
希望这对你有所帮助。
答案 1 :(得分:-1)