heinetz: jstree und die async-Option?

Hallo Forum,

ich versuche mit dem jquery-tree-plugin 'jstree' eine Baumstruktur abzubilden. Der JSTree kann, wie in diesem Beispiel mit JSON umgehen und ich versuche es auch ;)

Ich habe also ein 'async_json_data.json.php' gebaut, dass die DB-Werte ausliesst und in dem richtigen Format ausgibt. Prima, nun zeigt das Beispiel mir, die Daten aus der Datenbank als Verzeichnisbaum an. Beim Laden der Seite wir das Lade-Icon angezeigt, was meinem Eindruck nach dafür spricht, dass die Daten genierert werden, nachdem der Rest der Seite schon angezeigt wird.

Mein Verzeichnisbaum besteht aus ca. 2000 Knoten und beim Laden der Seite werden mir 3 Ordner unterhalb der Wurzel geschlossen angezeigt. Öffnet man einen davon, wird, wie erwartet, dessen Inhalt angezeigt.

Was ich mir unter der async-Option vorgestellt hatte, ist, dass
erst beim Öffnen eines Ordners dessen Inhalt 'geholt' wird. Das
scheint es aber nicht zu sein.

Ich glaube, ich habe ein grundsätzliches Verständnisproblem mit
'async'. Kann mir das jemand erklären?

danke für Tipps und

beste gruesse,
heinetz

  1. asynchron bedeutet nicht, dass es erst nach und nach geholt, sondern lediglich, dass sämtlicher anderer JS-Code nicht während der Ausführung geblockt wird.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
    1. danke für die Klärung!

      heinetz

  2. Hi,

    Ich glaube, ich habe ein grundsätzliches Verständnisproblem mit
    'async'. Kann mir das jemand erklären?

    Hat LX ja eigentlich schon gemacht.

    Asynchron in Bezug auf per JS gemachte Requests bedeutet nur, dass sie nicht „blockieren“, also die restliche Verarbeitung nicht abwarten muss, bis das Ergebnis des Requests vorliegt. Stattdessen wird einfach ein Handler definiert, der sich um die Verarbeitung des Requests kümmert, sobald sein Ergebnis vorliegt.

    Was ich mir unter der async-Option vorgestellt hatte, ist, dass
    erst beim Öffnen eines Ordners dessen Inhalt 'geholt' wird. Das
    scheint es aber nicht zu sein.

    Das wirst du wohl selbst implementieren müssen, wenn das gewählte Script es nicht vorsieht.

    Dazu musst du sowohl das serverseitige Script anpassen, so dass es nicht gleich alle Ebenen ausliest; als auch das clientseitige Script, so dass es beim „Öffnen“ eines Ordners (also vermutlich auf Klick hin) einen neuen Request macht, der vom Server die Daten für diese Ebene anfordert (sofern sie nicht bereits bei einem vorherigen Aufklappen angefordert wurden). Also müssen auch entsprechend Parameter übergeben werden, damit das serverseitige Script weiss, welche Daten es zu liefern hat.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Hi,

      in meinem speziellen, das Skript betreffenden Problem, hat ich
      die Lösung auch schon gefunden:

      Ich hatte, wie Du vermutet hast, die ganze Struktur als JSON
      abgelegt und aus dieser wurde dann sofort der ganze Baum
      geladen. Das Skript holt tatsächlich bedeingt durch die Otion
      'async' die benötigten Daten in dem defnierten JSON-File neu
      ab sofern die noch nicht geladen wurden. Da aber alles gleich
      geladen wird, wird nichts mehr benötigt. Ich habe tatsächlich
      das JSON-File dahingehend anpassen können, dass es die benötigten
      Daten liefert und nun verhält sich der Baum, wie erwartet.

      dank und

      beste gruesse,
      heinetz