JsTree 和 Laravel 麻烦

JsTree and Laravel Trouble

我正在按照此 guide 在我的 Laravel 5.5 应用程序中使用 Ajax 设置具有延迟加载的 JsTree。

这是我的控制器:https://gist.github.com/aaronr0207/7fa0a38f40bfd2f728a15d655254f82d

我的观点: https://gist.github.com/aaronr0207/f87720263e3d6026b04b00c08bae5cb2

我的JsTreeclass完全一样我没做任何改动

实际上我在 chrome 的控制台上收到以下错误:

d9973d3e-1476-4453-a013-9e9c8430bcba:1 Uncaught TypeError: Cannot read property 'children' of undefined

但是当我转储响应以对其进行调试时(在 TreeViewController 数据方法的末尾):

        dd(response()->json($tree->build()));

有效...

我的回复看起来像这样(当我死掉它时):

有什么想法吗?谢谢

EDIT1:如果我 return 一个简单的 json_encode($tree->build) 没有错误,但它显示一棵空树...响应如下所示:

EDIT2:明白了!但是现在有一个新问题......我所做的就是用回调更改 url 字符串:

 $('#jstree').jstree({
    'core': {
        'data': {
            'url': function (node) {
                return '{!! route('tree.data') !!}' ;
            },
            'data': function (node) {
                console.log(node);
                return {'id': node.id};
            }
        }
    }
});

但是现在当我获取下一级目录时,如果它们里面有另一个目录,它会失败而不会出错:

测试1内容如下:

如果我删除 test1/test2 文件夹,它会显示:

当我删除 txt 文件时也是如此...现在发生了什么?也许这是一个新问题,所以我会 post 我对主要问题的解决方案,我会接受它。

我怀疑你命名的路由没有正常工作。在您的 TreeController.php 中,更改路线 tree/route 如下:

Route::get('tree/route', 'TreeController@data')->name('tree.data');

知道了!我所做的就是用回调更改 url 字符串:

$('#jstree').jstree({
    'core': {
        'data': {
            'url': function (node) {
                return '{!! route('tree.data') !!}' ;
            },
            'data': function (node) {
                console.log(node);
                return {'id': node.id};
            }
        }
    }
});

这可能是由响应中的转义引起的。你能dd($request->id)设置id的时候吗?