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

zed5wv10  于 2022-11-22  发布在  jQuery
关注(0)|答案(3)|浏览(130)

我 使用 的 是 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": { 
        "url" : "scripts/server_processing.php",
        "data" : function ( d ) {
            d.primarySearch = $('#form1').serialize(),
            d.secondSearch = $('#form2').serialize(),
            d.thirdSearch = $('#form3').serialize(),
        }
    }

格式
但是 , 如果 我 搜索 的 数据 在 #form1 中 , 我 只 想 传递 该 数据 , 而 不是 来自 #form2#form3 的 数据 。 但是 由于 每次 都 不同 , 我 需要 能够 说出 要 传递 给 data: 对象 的 表单 。

k2arahey

k2arahey1#

我也在使用服务器端处理。你可以按照下面的代码调用它:
这是静态表单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(); 
})

希望这对你有帮助。

kx1ctssn

kx1ctssn2#

ajax: {
                url: "{{ route('admin.deposits.index') }}",
                data: {
                    filter: $('#filter form').serialize(); // **not dynamic**
                }
            },

ajax: {
                url: "{{ route('admin.deposits.index') }}",
                data: {
                    filter: function () { // dynamic
                        return $('#filter form').serialize();
                    }
                }
            },

那么就可以对动态数据使用** AJAX ()**。
这解决了我的问题。

ylamdve6

ylamdve63#

如果 你 只 需要 在 代码 中 修改 datatable 的 ajax 初始 url , 你 可以 使用 :

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

中 的 每 一 个
API Documentation 的 最 大 值

相关问题