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的时候吗?
我正在按照此 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的时候吗?