有没有办法覆盖数据表中的动作?

问题描述

我正在为无法更改的已建立API端点编写Datatables / Bootstrap前端。 Datatables开箱即用,提供了排序,搜索分页功能,但是这些功能似乎只有在API端点识别出Datatables认在其ajax请求中发送的参数时才起作用。

Datatables确实提供了一种在初始化期间用端点期望的参数覆盖认参数的机制。但是,当使用诸如sort之类的Datatables功能时,如何使Datatables保持使用初始化的那些自定义参数呢?

初始化代码(简化和相关部分):

$('#table').DataTable(         
        ajax : {
            data : function(dt_params){
                //custom_params. dt_params is the default Datatables params
                  return {
                     _search       : false,nd            : new Date().getTime(),rows          : 100,page          : dt_params.draw,sidx          : 'family_name',sord          : 'asc',returnColumns : 'name,age,occupation'
                  }

            },//this allows the response to be modified in a way that Datatables understands
            dataFilter : function(response){

               var json = JSON.parse(response);
               json.recordsTotal = json.records;
               json.recordsFiltered = json.records;

               return JSON.stringify(json);
            },dataType    : 'json',contentType : "application/json; charset=utf-8",type        : 'GET',url         : window.yii_app_baseUrl + 'api/users?',dataSrc     : 'rows'
         },);

数据表会将custom_params发布到api,获取数据并在初始加载时提供该表。但是诸如“搜索”和“排序”之类的功能将无法使用,因为在初始化表之后,数据表不会继续使用自定义参数,而是会将其自己的认参数发送到端点。

是否有办法阻止Datatables在“搜索”或“排序”或“分页”单击时执行自动ajax请求,并编写自定义代码来处理这些事件?初始化后,似乎唯一允许与ajax相关的修改是Datatables,它是URL。例如,在处理程序中类似table.ajax.url('new_api_url');内容。我可以手动将自定义参数附加到新的url,但是问题是我无法“劫持”自动ajax请求数据表可以...

或者,是否有一种方法可以在单击分页或排序功能时强制数据表继续使用自定义参数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)