【问题标题】:Why is the link getting doubled sometimes when I use yajra-datatable for laravel?为什么当我将 yajra-datatable 用于 laravel 时,链接有时会加倍?
【发布时间】:2021-10-14 01:36:32
【问题描述】:

大多数时候,当我在用户列表中选择一个用户时,链接会转到“localhost:8000/user/1”,但有时会转到“localhost:8000/user/user/1”。我无法删除链接data = '<a href="user/' + data + '>' + data + '</a>'; 中的user,因为大多数情况下它会正确显示用户页面。

这是UserController下的代码

public function getUsers(Request $request) {
    if ( $request->ajax() ) {
        ...
        return Datatables::of($data)
            ->addColumn('id', function($row) {
                return $row['id'];
            })
            ->addColumn('name', function($row) {
                return $row['name'];
            ->rawColumns(['id', 'name'])
            ->make(true);
    }
}

这是用户 index.blade.php 的脚本

<script type="text/javascript">
    $(function () {
        var table = $('.yajra-datatable').DataTable({
            processing: true,
            serverSide: true,
            ajax: "{{ url('users/list') }}",
            columns: [
                {
                    data: 'id',
                    name: 'id',
                    "render": function(data, type, row, meta) {
                        if(type === 'display'){
                            data = '<a href="user/' + data + '>' + data + '</a>';
                        }

                        return data;
                    }
                },
                {data: 'name', name: 'name'},
            ],
        });
    });
</script>

【问题讨论】:

    标签: laravel yajra-datatable


    【解决方案1】:

    在url前面加斜杠

    data = '<a href="/user/' + data + '>' + data + '</a>';
    

    【讨论】:

    • 谢谢。如果错误不再出现,我会在一个月后将此标记为答案。
    【解决方案2】:

    我认为导致问题的原因可能是 href 属性,因为如果您在“/user”页面上,href 值“user/1”将添加到该属性中,因此它会给出类似“/user/user”的结果/1"。

    您应该为此设定一个绝对值。使用这种方法是可以实现的。尝试为用户阅读页面创建一个完整的 URL,如下所示:

     $(function () {
            var users_url = "{{config('app.url'}}/user/"; // <-- This should be the absolute URL to user page
            var table = $('.yajra-datatable').DataTable({
                processing: true,
                serverSide: true,
                ajax: "{{ url('users/list') }}",
                columns: [
                    {
                        data: 'id',
                        name: 'id',
                        "render": function(data, type, row, meta) {
                            if(type === 'display'){
                                data = '<a href="' + users_url + data + '">' + data + '</a>';
                            }
    
                            return data;
                        }
                    },
                    {data: 'name', name: 'name'},
                ],
            });
        });
    

    【讨论】:

    • 谢谢。如果错误不再出现,我会在一个月后将此标记为答案。
    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 2011-12-25
    • 2021-11-14
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多