如何将附加参数传递给 jQuery DataTable ajax 调用?

Posted

技术标签:

【中文标题】如何将附加参数传递给 jQuery DataTable ajax 调用?【英文标题】:How do I pass additional parameters to the jQuery DataTable ajax call? 【发布时间】:2016-02-07 21:38:43 【问题描述】:

加载 jQuery DataTable 时,我的代码如下所示。如何将附加参数传递给 AJAX 调用?下面问题和答案中建议的 fnServerParams 回调不起作用。也就是说,天真地使用aodata.push() 会导致“push is undefined”(因为实际上,aodata 不是数组)。那么正确的做法是什么?

相关问题:

Datatables serverside. Send extra parameters asynchronously Understanding fnServerData in Datatables

代码:

self.dataTable = self.dataTableContainer.DataTable(
            "autoWidth": false,
            "bSort": false,
            "displayStart": 0,
            "paging": false,
            "lengthChange": false,
            "processing": true,
            "serverSide": true,
            "dom": "<'dataTables_header dashboard_alert_history__alertHeader'i>",
            "ajax": 
                url: getDataUri,
                error: onError,
                cache: false,
                "fnDrawCallback": onTableDrawn,
            ,
            "fnDrawCallback": onTableDrawn,
            "language": 
                "info": resources.alarmHistory,
                "infoEmpty": resources.alarmHistory,
                "infoFiltered": ''
            ,
            "columns": [
                
                    "data": "timestamp",
                    "mRender": function (data) 
                        return IoTApp.Helpers.Dates.localizeDate(data, 'L LTS');
                    ,
                    "name": "timestamp"
                ,
                
                    "data": "deviceId",
                    "mRender": function (data) 
                        return htmlEncode(data);
                    ,
                    "name": "deviceId"
                ,
                
                    "data": "ruleOutput",
                    "mRender": function (data) 
                        return htmlEncode(data);
                    ,
                    "name": "ruleOutput"
                ,
                
                    "data": "value",
                    "mRender": function (data) 
                        return htmlEncode(IoTApp.Helpers.Numbers.localizeFromInvariant(data));
                    ,
                    "name": "value"
                ,
            ],
            "columnDefs": [
                
                    "targets": [0, 1, 2, 3],
                    "className": 'table_alertHistory_issueType',
                    "width": "20%"

                
            ],
        );

【问题讨论】:

【参考方案1】:

我忽略了 RTFM。对于 1.9 及更早版本,fnServerParams 回调现在为 legacy。在最新版本的 DataTables 中,您利用了 ajax 数据参数 as described in the DataTables documentation。在下面的示例中,将 mykey 附加到 d 对象即可:

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

【讨论】:

太棒了!这正是我正在寻找的。谢谢你的好回答! 如何在已经初始化的数据表上执行此操作? @SandeepBalagopal 这对我来说已经很多年了,但我认为这是一个不同的问题。您在问,“加载后如何操作表格?”或者更有可能,您想在数据显示之前捕获 ajax 承诺并对其进行操作。 我想在初始化后将额外的参数传递给 ajax url。发现我必须销毁表并为此重新创建它。 @SandeepBalagopal 我仍在寻找类似问题的答案***.com/questions/67376953/…。如果您有解决方案,请帮助我。

以上是关于如何将附加参数传递给 jQuery DataTable ajax 调用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不覆盖数据源参数的情况下将附加参数传递给剑道模板

如何将附加参数传递给自定义 python 排序函数

Python最小化函数:将附加参数传递给约束字典

Apache Tomcat 1.7 如何将附加参数传递给 JAAS

如何在 PHP 中将单个附加参数传递给 array_map 回调?

jQuery UI 问题。如何将参数传递给函数