Jquery DataTable—在ajax之前处理并禁用ajax的函数

Jquery DataTable—在ajax之前处理并禁用ajax的函数,jquery,datatables,Jquery,Datatables,我使用的是Jquery DataTable 1.10.15,这是我的数据表。我想检查用户点击每页时,该页的记录是否达到某个数量,如果达到了,我想弹出提示缩小搜索范围,而不是显示他们想要的页面,这意味着没有ajax调用/表加载。下面的代码对警报起作用,但当我返回false时,我认为它不会执行ajax调用,但它仍然会执行。有人知道怎么做吗 var myTable = $('#myTable') .on('preXhr.dt', function ( e, settings, data ) {

我使用的是Jquery DataTable 1.10.15,这是我的数据表。我想检查用户点击每页时,该页的记录是否达到某个数量,如果达到了,我想弹出提示缩小搜索范围,而不是显示他们想要的页面,这意味着没有ajax调用/表加载。下面的代码对警报起作用,但当我返回false时,我认为它不会执行ajax调用,但它仍然会执行。有人知道怎么做吗

var myTable = $('#myTable')
.on('preXhr.dt', function ( e, settings, data ) {
    if (data.start + data.length >=10000) {
        alert('here');
        return false;
    }
})
.DataTable({
    searching: true,
    processing: false,
    serverSide: true,     
    columns: columnsList,
    pageLength: 25,
    ajax: {

这就是你如何做到这一点:

$(document).ready(function () {
        //added this variable
        var stopAjaxing = false;
        $('#example').on('preXhr.dt', function (e, settings, data) {
            //changing to 100 since it works for rows, not pagges
            if (data.start + data.length >= 100) {
                //return false;
                //moved message to callback
                stopAjaxing = true;
            }
        })
        .dataTable({
            "preDrawCallback": function (settings) {
                if (stopAjaxing) {
                    alert("You need to refine  your search");
                    return false;
                }
                else {
                    return true;
                }
            },  
...

您需要做的就是修改.on('preXhr.dt'..)并添加回调。您可以执行其他操作,如data.draw(false),但这将不兼容跨浏览器,而且是错误的。这对您有用吗?