Load/Save 使用 Laravel 对数据表进行排序和过滤选项

Load/Save sorting & filter options on DataTables using Laravel

我需要保存分页、排序和搜索输入的状态,最终利用 Laravel 和 API 而不是数据库。我不想使用 yajra/laravel-datatables,因为我已经创建了我需要的复杂数据表。

例子

<script type="text/javascript">
    $(document).ready(function () {
        var table = $('#Whosebug-datatable').DataTable({
            "stateSave": true,
            "stateSaveCallback": function (settings, data) {
                $.ajax({
                    "url": "/api/save_state",
                    "data": data,
                    "dataType": "json",
                    "success": function (response) {}
                });
            },
            "stateLoadCallback": function (settings) {
                var o;
                $.ajax({
                    "url": "/api/load_state",
                    "async": false,
                    "dataType": "json",
                    "success": function (json) { o = json; }
                });
                return o;
            }
        });
    });
</script>

URL:“/api/load_state”指向 Laravel 路由,路由指向 Controller 上的特定方法。我看到它正在正确调用方法。但是,我不知道它发送给我什么或者我如何更改 JS 以告诉它给我我需要的东西。一旦我有一个对象(或其他东西),将它发回并在用户返回页面时应用它。

根据描述,看起来一切正常,您只需要一种方法来调试收到的数据,因此您可以使用 Log 来执行此操作:

Route::get('/api/load_state', function() {
    \Log::info(app('request')->all());
});

并跟踪日志

tail -f storage/logs/laravel.log

所以如果你点击

http://domain.dev/api/load_state?what=1    

你应该看看

要将 json 对象返回给客户端,您可以这样做

Route::get('/api/load_state', function(Request $request) {
    return response()->json(
        User::find($request->get('user_id'))
    );
});