【问题标题】:How can I get jQuery DataTables to run ajax requests sequentially, and not simultaneously?如何让 jQuery DataTables 顺序运行 ajax 请求,而不是同时运行?
【发布时间】:2018-01-17 22:48:05
【问题描述】:

我目前正在使用jQuery DataTables 查询一个大型数据源,每个请求运行大约需要2-5 秒。我遇到的问题是用户的输入速度会比这快得多——在前一个请求完成之前触发一个新的 ajax 请求。

DataTables 中是否有某种方法可以使 ajax 请求按顺序触发,即仅在前一个请求完成时才发出新请求?

这是我的代码

$(document).ready(function () {

        $("#applicationListServerSide").DataTable({
            mark: true,
            "processing": true, // for show progress bar
            "order": [[0, "desc"]],
            "serverSide": true, // for process server side
            "filter": true, // this is for disable filter (search box)
            "orderMulti": false, // for disable multiple column at once
            "searchDelay": 2000,
            "lengthMenu": [[25, 50, -1], [25, 50, "All"]],
            "ajax": {
                "url": "/Admin/LoadData",
                "type": "POST",
                "datatype": "json"
            }
        });
    });

【问题讨论】:

  • 看看JS回调函数。
  • 不幸的是,查看source 代码,似乎没有办法拦截ajax 调用进行过滤。即使preXHR 事件也不允许您停止ajax 调用。

标签: jquery datatables


【解决方案1】:

您可以配置 ajax 以使用 $.ajaxSetup() 进行同步调用。这应该覆盖基本设置。缺点是该上下文上的所有 ajax 调用都是同步的。您需要查看此解决方案是否适用于您的所有情况。否则,您需要根据页面或路由添加此配置。

https://api.jquery.com/jquery.ajaxsetup/

$.ajaxSetup({
  async: false
});

【讨论】:

    猜你喜欢
    • 2010-09-09
    • 2013-08-13
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多