在绘制之前将参数添加到datatable ajax调用

bst*_*s21 12 jquery datatables

我正在使用DataTables 1.10

有没有人知道如何在table.draw()之前动态地向ajax调用添加一个参数,所以我的请求有新的参数?我到处寻找,找不到答案.

我有一个人可以按下的按钮,并根据该按钮向服务器发送不同的参数.

$('#mytable').DataTable({
        iDisplayLength: 10,
        responsive: true,
        processing: true,
        serverSide: true,
        searching: false,
        bLengthChange: false,
        bProcessing: true,
        paging: true,
         ajax: {
            url: me.url,
            dataType: 'json',
            cache:false,
            type: 'GET',
            data: function ( d ) {
                $.extend( d, me.data);
                d.supersearch = $('.my-filter').val();
            }
        },
        columns: me.columns,
        columnDefs: me.renderer,
        initComplete: function() {

        }
    });
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但后来我尝试将它绑定到一个按钮来传递新的参数.

$('.button').on('click', function(){
      var table  = $('#mytable').DataTable();
      table.ajax.params({name: 'test'}); <- I want to do something like this
      table.draw(); 
})
Run Code Online (Sandbox Code Playgroud)

Gyr*_*com 8

我修改了你的代码来做你需要的.

初始化数据表:

 $('#mytable').DataTable({
    iDisplayLength: 10,
    responsive: true,
    processing: true,
    serverSide: true,
    searching: false,
    bLengthChange: false,
    bProcessing: true,
    paging: true,
    ajax: {
       url: me.url,
       dataType: 'json',
       cache:false,
       type: 'GET',
       data: function ( d ) {
          $.extend(d, me.data);
          d.supersearch = $('.my-filter').val();

          // Retrieve dynamic parameters
          var dt_params = $('#mytable').data('dt_params');
          // Add dynamic parameters to the data object sent to the server
          if(dt_params){ $.extend(d, dt_params); }
       }
    },
    columns: me.columns,
    columnDefs: me.renderer,
    initComplete: function() {

    }
 });
Run Code Online (Sandbox Code Playgroud)

处理按钮上的点击事件:

注意:我假设这是您为AJAX调用添加动态参数的唯一地方.

 $('.button').on('click', function(){
    // Set dynamic parameters for the data table
    $('#mytable').data('dt_params', { name: 'test' });
    // Redraw data table, causes data to be reloaded
    $('#mytable').DataTable().draw();
 });
Run Code Online (Sandbox Code Playgroud)