1

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

例子

<script type="text/javascript">
    $(document).ready(function () {
        var table = $('#stackoverflow-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>

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

4

1 回答 1

1

根据描述,看起来你一切正常,你只需要一种方法来调试你收到的数据,所以你可以使用 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'))
    );
});
于 2016-12-07T19:10:54.787 回答