【问题标题】:JQuery Datatable : Update request / PostData on Datatable ReloadJQuery Datatable:数据表重新加载时更新请求/ PostData
【发布时间】:2021-05-03 23:25:45
【问题描述】:

我有一个在 JS 模块中定义的 JQuery 数据表。而且,在其他地方,我试图在 Datatable 的 ID 选择器的帮助下重新加载它。在这里,我想传入我遇到问题的新请求发布数据。

我的尝试:

在模块 A 中:

$(selectors.Datatable)
    .DataTable({
        bProcessing: true,
        serverSide: true,
        ajax: {
            data: initialPostData,
            url: urls.read,
            method: 'POST'
        },
        columns: [...],
        autoWidth: false,
        searchDelay: 500
    });

在模块 B 中:

var newPostData = [...];
var dataTableWidget = $(selectors.datatableSelector).DataTable();
dataTableWidget.ajax.params(newPostData);
dataTableWidget.ajax.reload();

我期待dataTableWidget.ajax.params(newPostData); 应该在 ajax 请求中发布新数据。但事实并非如此。

更新

params 不会在这里提供帮助。来自文档:

获取上次Ajax请求中DataTables提交给服务器的数据

【问题讨论】:

  • 如果您想重新执行 DataTables ajax 请求 - 但使用不同的 data(即作为请求的一部分提交给服务器的数据) - 您必须向ajax.data 选项。有一个例子here。请注意该答案中的 warning 与服务器端处理有关,我看到您也在使用它。 (我看到你已经在使用ajax.reload() 来触发重新加载。)
  • 此示例仅在初始加载和重新加载都在同一个模块中时才有效。就我而言,它不是。它们位于两个不同的模块中。
  • 它们位于两个不同的模块中 是的,问题中明确说明了这一点。是否有什么东西阻止你的 2 个不同的模块访问一个公共功能?
  • 另外(出于好奇),为什么 A 中有 selectors.Datatable,而 B 中有 selectors.datatableSelector?这不也是 A 和 B 共同的东西吗?如果我在这里偏离路线,也许minimal reproducible example 将有助于澄清。
  • A 中的 selectors.Datatable 和 B 中的 selectors.datatableSelector 都保存保存值。它们在不同的模块中有不同的名称。获取请求数据的函数在Module B中是紧耦合的,不能导出到一个普通的Module中。

标签: jquery datatables


【解决方案1】:

查看 JQuery Datatable 的文档后,我发现这是一种解决方法。

dataTableWidget.settings()[0].ajax.data = newPostData;

dataTableWidget.ajax.reload();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多