2017-09-27 2 views
1

Ich verfolge diese guide, um JsTree mit Lazy Load mit Ajax in meiner Laravel 5.5 App einzurichten.JsTree und Laravel Trouble

Dies ist mein Controller: https://gist.github.com/aaronr0207/7fa0a38f40bfd2f728a15d655254f82d

Meine Ansicht: https://gist.github.com/aaronr0207/f87720263e3d6026b04b00c08bae5cb2

Meine JsTree Klasse ist genau das gleiche ich keine Änderung gemacht hat.

Ich erhalte die folgende Fehlermeldung auf Chrom Konsole Eigentlich:

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

enter image description here

Aber wenn ich die Antwort Dump es zu debuggen (am Ende der TreeViewController Daten-Methode):

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

Es funktioniert ...

enter image description here

Meine Antwort sieht wie folgt aus (wenn ich es die-Dump):

enter image description here

Jede Idee? Danke

EDIT1: Wenn ich eine einfache json_encode($tree->build) dorthin zurückkehren sieht keine Fehler, aber es zeigt einen leeren Baum ... und die Antwort wie folgt aus:

enter image description here

EDIT2: got es! Aber jetzt gibt es eine neue Ausgabe sind ... Alles, was ich tat, es zu lösen war die URL-Zeichenfolge mit einem Rückruf ändern:

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

Aber jetzt, wenn ich das nächste Level Verzeichnisse holen, wenn sie einen anderen directorie haben darin versagt, ohne Fehler:

enter image description here

Test1 Inhalt ist folgende:

enter image description here

Wenn ich löschen test1/test2 Ordner, funktioniert es zeigt:

enter image description here

Gleiche, wenn ich die TXT-Datei löschen ... Was geschieht jetzt? Vielleicht ist das eine neue Frage, also werde ich meine Lösung für das Hauptproblem veröffentlichen, und ich werde es akzeptieren.

+0

Welche Antwort erhalten Sie, wenn Sie die API manuell mit einem 'id' Parametersatz auf' uploads/general/test1' aufrufen? –

Antwort

0

haben es!Alles, was ich es zu lösen tat, war die URL-Zeichenfolge mit einem Rückruf ändern:

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

Ich vermute, dass Ihre angegebene Route nicht richtig funktioniert. In Ihrem TreeController.php, ändern Sie die Route tree/route wie folgt:

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

Testen Sie es einfach, das gleiche Ergebnis – aaron0207

0

Dies wird durch die Flucht in der Reaktion verursacht werden könnte. Können Sie dd($request->id), wenn die ID gesetzt ist?

+0

Ja, hier ist die Antwort: https://imgur.com/a/oIyLW keine Idee? – aaron0207