当前位置: 首页 > 知识库问答 >
问题:

DataTables在初始化时不发送ajax请求

蒋培
2023-03-14

如何使用dataTables实例化不加载数据的表(服务器模式),然后在单击按钮时加载数据。如果serverSide在初始化时设置为true,则表将自动发送ajax请求,然后呈现数据,这不是我想要的(

共有3个答案

许永年
2023-03-14

在看了半天的源代码之后,我终于找到了一个解决方案。首先,我需要一个名为firstAjax的自定义参数,并将其设置为false。这样地:

$("#example").DataTable({
    serverSide: true,
    ajax: {
        url: 'your url'
    },
    firstAjax: false
});

然后我改变了

_fnReDraw (settings);  //in datatables.js line 4717

if (settings.oInit.firstAjax) {
         _ fnReDraw (settings);
     }

如果压缩js文件(datatables.min.js),则应查找_fnReDraw函数对应的别名。

龙永福
2023-03-14

在类似的情况下,我就是这样做的。

         <script>
                $(function ($) {
                    $("#tbl").DataTable({columns:[{data:"id"}, {data:"text"}], dom: "tB", buttons: [{ text: "Load Me", action: function (e, dt, node, config) { loadme(e, dt, node, config); } }] });
                }
                );

                // // parameters are passed from the datatable button event handler
                function loadme(e, dt, node, config) {
                    parms = JSON.stringify({ parm1: "one", parm2: "two" });

                    $.ajax({
                        // my test web server that returns an array of {id:"code field", text:"country namee"}
                        url: "WebService1.asmx/GetAList",
                        data: JSON.stringify({ s: parms }),
                        type: 'post',
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        // this is just away of passing arguments to the success handler
                        context:{dt:dt, node:node},

                        success: function (data, status) {

                            var contries = JSON.parse(data.d);
                            for (var i = 0; i < contries.length; i++){
                                this.dt.row.add(contries[i], "id", "text");
                                this.dt.draw();
                            }
                        },
                        error: function (one, two) {
                            debugger;
                        }
                    });

                }


            </script>
        </head>
        <body>
            <div style="width:500px">
                <table id="tbl">
                    <thead>
                        <tr>
                            <th>Code</th>
                            <th>Contru</th>
                        </tr>
                    </thead>
                    <tbody></tbody>
                    <tfoot></tfoot>
                </table>
            </div>
        </body>
王轶
2023-03-14

初始化时,应在DataTables参数中使用“iDeferLoading”:0:

var table =  $("#table").dataTable({
  "bProcessing": true,
  "bServerSide": true,
  "iDeferLoading": 0,
  "sAjaxSource": service_url,
  "sServerMethod": "POST",
  ...
  ...

(或“延迟加载”:0用于更新的DataTables版本,1.10及更高版本),然后将事件添加到按钮:

$("#button").on("click", function (event) {
   $('#table').dataTable().fnDraw();
});

https://datatables.net/examples/server_side/defer_loading.html

 类似资料:
  • 本文向大家介绍datatables 初始化最小数据表:,包括了datatables 初始化最小数据表:的使用技巧和注意事项,需要的朋友参考一下 示例 以下代码会将ID为的表tableid转换为DataTable,并返回DataTables API实例: 将此代码与以下代码进行比较,该代码会将表转换为DataTable,但不会返回DataTables API实例: 有关使用DataTables AP

  • null 连接已建立,但日志中出现以下错误: 未能发布TcpConnectionOpenEvent[Source=TCPNetConnection:LocalHost:37656:1234:187CFBC2-7E5D-4F4E-97DE-1A3B55A4E264],[Factory=ServerConnectionFactory,ConnectionId=LocalHost:37656:1234:

  • 交互过程中,发送请求是第一步。那么,我们将如何构造一个请求呢? 这一章节,我们将一步一步来构建一个 Ajax 请求。学习本节,你将学会: 如何通过 XMLHttpRequest 和 ActiveXObject 来构造一个通用的 xhr 对象。 如何通过 xhr 对象来发送 GET、 POST 等请求。 Content-type 在 Ajax 数据发送中的作用。 那么,接下来让我们进入本节的学习吧。

  • 问题内容: 当我使用JQuery一起发送两个ajax请求时,响应一起出现 例如 ajax.php,ajax2.php是两个文件,其中包含一个虚拟的for循环大约需要5秒钟。 萤火虫萤幕 POST本地主机/ajax.php 200 OK 4.77s POST本地主机/ajax.php 200 OK 4.37s 在这里,每个请求大约需要5秒钟才能执行… 当我在symfony做相同的例子时,我得到了不同

  • 据我所知,在Java11中,这两个操作可以在一行中完成,不是吗?

  • 我正在尝试使用ajax发送post请求,但始终出现以下错误: XMLHttpRequest无法加载http://192.168.1.123:8080。对预检请求的响应无法通过权限改造检查:请求的资源上不存在“访问控制允许源”标头。因此不允许访问源“http://localhost:8080”。 这是我的代码