如何在没有 Ajax 的 JQuery DataTables 中使用服务器端处理

Posted

技术标签:

【中文标题】如何在没有 Ajax 的 JQuery DataTables 中使用服务器端处理【英文标题】:How to use server-side processing in JQuery DataTables without Ajax 【发布时间】:2021-09-21 23:43:29 【问题描述】:

我在 Vue 2 中使用 JQuery DataTables。下面的 sn-p 显示了我如何将它与 JSON 数据源一起使用 从自定义方法获取 使用 wretch 包(它还处理授权)。

...
mounted: function () 
  this.dataTable = window.$(this.$el).DataTable(
    data: this.getGridData,
    columns: this.getColumns,
    // serverSide: true
  );
,
...

此方法运行良好。现在我想启用serverSide 功能来控制paginationsearch,而不使用ajax 选项。

我的后端应用程序在 .NET Framework 中运行。我已经创建了我的响应数据结构,如 here 所示,但它似乎没有帮助。

简单地说,我想在使用serverSide 功能的同时使用我的自定义方法 将数据提取到DataTable 中。

这可能吗?我期待您的帮助。

【问题讨论】:

【参考方案1】:

DataTables 的ajax 选项有多种不同的形式。

其中之一如下:

$('#example').dataTable( 
  "serverSide": true,
  "ajax": function (data, callback, settings) 
    // whatever logic you want to use can go here,
    // as long as it evaluates to a valid JSON structure
    // expected by DataTables, as a server-side response.
    callback(
        resultsOfYourLogic  
    );
  
 );

您可以在链接的文档中阅读它的描述 - 但它基本上说明:

作为一个函数,Ajax 调用由您自己决定,允许完全控制 Ajax 请求。实际上,如果需要,可以使用 Ajax 以外的方法来获取所需的数据...

因此,您可以将其与serverSide: true 一起使用,以使用您希望获取数据的任何替代方法。

例子:

"ajax": function (data, callback, settings) 
  var dataSet = yourCustomFunction(data);
  callback(
    dataSet 
  );
,

这里先调用自定义函数,返回需要显示的JSON。请求数据被传递给该自定义函数。然后将该自定义函数的结果放入回调中。

这里的一个重要注意事项是:回调中的data 参数将预先填充server-side request 数据(在用户排序/过滤/页面时由DataTables 自动创建)。因此,您将需要处理此请求数据,以了解您的响应数据需要如何构建。

(您在问题中链接到的响应数据结构是正确的结构。)

【讨论】:

太棒了!完美的解决方案。谢谢。

以上是关于如何在没有 Ajax 的 JQuery DataTables 中使用服务器端处理的主要内容,如果未能解决你的问题,请参考以下文章

如何使用没有 jQuery 但纯 Javascript 的 AJAX 提交此表单

如何使用 ajax Post 方法在没有 jQuery 的情况下提交用户输入

如何在没有 Ajax 的 JQuery DataTables 中使用服务器端处理

如何在 wordpress 中通过 jQuery/Ajax 上传图片

如何将延迟的ajax数据获取到rails视图

如何调试 jquery AJAX 调用?