2017-09-27 128 views
1

我正在關注此guide以在我的Laravel 5.5應用程序中使用Ajax進行延遲加載來設置JsTree。JsTree和Laravel麻煩

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

筆者認爲: https://gist.github.com/aaronr0207/f87720263e3d6026b04b00c08bae5cb2

我JsTree類是完全一樣的我沒有做任何改變。

其實我得到的鍍鉻的控制檯上看到以下錯誤:

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

enter image description here

但是,當我轉儲響應調試它(TreeViewController數據方法的末尾):

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

它的工作原理...

enter image description here

我的回答是這樣的(當我死了,放棄它):

enter image description here

任何想法?謝謝

EDIT1:如果我回到一個簡單的json_encode($tree->build)沒有錯誤,但它顯示一個空的樹......和響應看起來是這樣的:

enter image description here

EDIT2:有它!但現在有一個新的問題......我所做的,解決它是改變URL字符串的回調:

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

但現在當我取一個新的水平目錄,如果他們有其他directorie裏面沒有失敗錯誤:

enter image description here

Test1的內容如下:

enter image description here

如果我刪除測試1/test2的文件夾,它的工作原理顯示:

enter image description here

同樣的,當我刪除txt文件...什麼是現在發生了什麼?也許這是一個新問題,所以我會將我的解決方案發布到主要問題上,我會接受它。

+0

當您通過'id'參數設置爲'uploads/general/test1'手動調用api時,您會得到什麼迴應? –

回答

0

得到它!我所要解決的一切都是用一個回調來更改url字符串:

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

我懷疑你的命名路線工作不正常。在你TreeController.php,如下修改路由tree/route

Route::get('tree/route', '[email protected]')->name('tree.data'); 
+0

只是測試它,結果相同 – aaron0207

0

這可能是由響應中的轉義引起的。你可以dd($request->id)當ID設置?

+0

是的,這裏是迴應:https://imgur.com/a/oIyLW有什麼想法? – aaron0207