0

您好,我有以下控制器方法可以将数据返回到 Laravel 中的数据表,

控制器方法

public function get(Request $request) {
    return Datatables::of(AppUser::all())
    ->addColumn('status', function ($user) {
        if ($user->status == 1) {
            return '<span class="label label-success">Active</span>';
        } else {
            return '<span class="label label-danger">Inactive</span>';
        }
    })
    ->addColumn('actions', function ($user) {
        return view('backend.appuser.actionButton', compact('user'))->render();
    })
    ->make(true);
}

然后在我渲染数据表的视图中,我有以下代码。

        <table id="users-table" class="table table-condensed table-hover">
            <thead>
                <tr>
                    <th>Username</th>
                    <th>NIC</th>
                    <th>Mobile</th>
                    <th>Status</th>
                    <th>Actions</th>
                </tr>
            </thead>
        </table>

在我的脚本标签中,我有以下代码

$(function() {
    $('#users-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: {
            url: '{{ route("admin.app-access.user.get") }}',
            type: 'get',
            data: {status: 1, trashed: false}
        },
        columns: [
            {data: 'email', name: 'email'},
            {data: 'nic', name: 'nic'},
            {data: 'mobile', name: 'mobile'},
            {data: 'status', name: 'status'},
            {data: 'actions', name: 'actions'}
        ],
        pageLength:25,
        lengthMenu:[[10,25,50,100,-1],[10,25,50,100,"All"]],
        order: [ [ 0, "desc" ] ],
        dom: "lBfrtip",
        buttons:
            [
                {extend: 'excel', footer: true, title: 'User Details'},
                {extend: 'pdf', footer: true, title: 'User Details', orientation: 'landscape', pageSize: 'LEGAL'},
                {extend: 'print', footer: true, title: 'User Details', orientation: 'landscape', pageSize: 'LEGAL'}
            ],

        searchDelay: 500
    });
});

错误 当我转到加载数据表的索引页面时,它显示 DataTables 警告:表 id=users-table - 无效的 JSON 响应。有关此错误的更多信息,请参阅http://datatables.net/tn/1

我试过的

  1. 我尝试在上述控制器方法中犯一点语法错误,以查看应用程序是否崩溃。如果应用程序崩溃,这意味着从数据表发送的请求必须命中我的控制器方法。(应用程序实际上崩溃了,所以来自数据表的请求来到了我的控制器方法。)
  2. 我转到network我的开发人员工具中的选项卡并检查从数据表发送的请求的响应。响应为空。它只显示三个空行。由于响应为空,我无法弄清楚错误是什么。

下图显示了我得到的回复。 空响应图片

(我正在使用 Laravel 5.4)

4

1 回答 1

0

我之前添加rawColumns->make(true)你会尝试使用此解决方案一次吗?我猜它应该可以工作!

所以在这里你的遗嘱看起来像......

public function get(Request $request) {
    return Datatables::of(AppUser::all())
    ->addColumn('status', function ($user) {
        if ($user->status == 1) {
            return '<span class="label label-success">Active</span>';
        } else {
            return '<span class="label label-danger">Inactive</span>';
        }
    })
    ->addColumn('actions', function ($user) {
        return view('backend.appuser.actionButton', compact('user'))->render();
    })
    ->rawColumns(['status', 'actions'])
    ->make(true);
}

于 2022-01-21T12:48:24.533 回答