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

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

相关问题:

代码:

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%"

                }
            ],
        });

【问题讨论】:

    标签: javascript ajax datatables


    【解决方案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 我仍在寻找类似问题的答案stackoverflow.com/questions/67376953/…。如果您有解决方案,请帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2021-09-29
    • 1970-01-01
    • 2016-02-18
    • 2011-09-20
    相关资源
    最近更新 更多