首页 > 解决方案 > 数据表 - 当数据表尝试发出 AJAX 请求时获取 net::ERR_CONNECTION_CLOSED

问题描述

我正在使用 Datatable AJAX 从服务器端获取数据,它在 localhost 上运行良好,但是当我将此应用程序上传到实时服务器时,我收到此错误并且数据表未加载数据,

net::ERR_CONNECTION_CLOSED [连同查询字符串]

我的JS代码:

$(".employee-table").DataTable({
        processing: true,
        serverSide: true,
        respoonsive: true,
        ajax: getBaseUrl() + "employee/load_employees",
        dom:'<"col-sm-6"l><"col-sm-6 align-right"f>rt<"col-sm-6"i><"col-sm-6 align-right"p>',
        scrollY: "200",
        scrollX: true,
        oLanguage: { sProcessing: preloaderHTML },

        columnDefs: [
            {
                targets: [0],
                visible: false,

            },
            {
                targets: [-1],
                visible: true,
                render: function(data, type, row) {
                    return `
                            <a href="${getBaseUrl() + 'employee/profile/' + row[0]}" class="btn btn-warning btn-xs waves-effect" data-toggle="tooltip" data-placement="left" title="" data-original-title="View Employee"><i class="material-icons">remove_red_eye</i></a>
                            <a href="${getBaseUrl() + 'employee/edit/' + row[0]}" class="btn btn-primary btn-xs waves-effect" data-toggle="tooltip" data-placement="left" title="" data-original-title="Edit Employee"><i class="material-icons">edit</i></a>
                            `;
                }
            },
            {
                targets: [28],
                visible: true,
                render: function(data, type, row) {
                    return `<span class="badge ${ getBadgeClass(data) }">${data}</span>`;
                }
            },
            {
                targets: [27],
                visible: true,
                render: function(data, type, row) {
                    return `<span class="badge ${ data === "c" ? "bg-green" : "bg-red" }">${data === "c" ? "Confirmed" : "Probation"}</span>`;
                }
            },

            {
                targets: [23],
                visible: true,
                render: function(data, type, row) {
                    let badgeClass = "bg-green";
                    if (data === "CONTRACTUAL") {
                        badgeClass = "bg-orange";
                    }
                    if (data === "TRAINEE") {
                        badgeClass = "bg-blue";
                    }

                    return `<span class="badge ${ badgeClass }">${data}</span>`;
                }
            },


        ],
        order: [0 ,'desc']
    });

当我将该 URL 放入浏览器并运行时,我得到了正确的数据。任何帮助,将不胜感激。

标签: jquerydatatables

解决方案


看起来你有这么多列,这可能会达到 GET 参数字符限制

所以最好使用POST方法

 $(".employee-table").DataTable({
            ...
            ajax: {
                url: getBaseUrl() + "employee/load_employees",
                method: 'post',
            }
            ...
        });

ref: _GET 中 URL 参数的最大大小


推荐阅读