#geloest Problem beim Objekt uebergeben

  • Hallo Forum.

    ich habe eine Callback Funktion die ueber GetJSON mit Objekten aus ein JSON file befuellt wird. Sie code.

    Nun moechte ich aber die Daten nicht mehr ueber die Datei reinladen, sondern sie liegen nun als JSON string (options.test) bereits geladen aus der datenbank vor.

    Nun Weiss ich nicht welche Methode ich anstelle von GetJSON nutzen kann. Probierte es mit .parse, .load und .data aber die Callback Funktion wird nicht korrekt befuellt.


    Grund fuer die umstellung ist das die SharePoint admins mir die Berechtigung zum schreiben von dateien auf Grund von Sicherheit genommen haben.


    Hier der Codeschnippsel


    Code
    var dataJSON = JSON.parse(options.test);  // Data as JSON string to object
    var url = options.source;                 // Path to JSON file
    
                //jQuery.data(dataJSON, function(rData) {            //Funktioniert nicht
                //jQuery.parseJSON(options.test, function(rdata) {   //Funktioniert nicht
                  jQuery.getJSON(url, function(rData) {              //Funktioniert, soll aber nicht mehr genutzt werden
                    data = rData;
  • IMO ist Zeile 1 der richtige Ansatz. Wenn das nicht funktioniert, würde ich vermuten, dass die Syntax des JSON fehlerhaft ist.

    Allerdings verstehe ich den Hintergrund nicht ganz: Wenn die Daten aus der DB geholt werden, muss es doch ein PHP-Skript geben, das das tut und Du musst dann das JSON, das mit echo ausgegeben wird, mit Ajax laden? Wenn dem so ist, besteht clientseitig gar kein Unterschied, sowohl das Lesen aus der Datei als auch das Aufrufen des PHP-Skripts liefert den JSON-String.

  • Danke fuer die Antwort Sempervivum. Der String in options.test ist ok. die Objekte sind in dataJSON auch korrekt. Entscheidend ist Zeile 6 (oben) (32 unten). Welche Methode kann ich anstelle getJSON nutzen um der callback Funktion die daten zu uebergeben? Oder anders wie kann ich die Daten weiter mit Zeile 6 verarbeiten.


    Zu deiner Frage: leider gibt es kein php. Ist nen SharePoint server. Ich hole mir die daten mit nem JQUERY REST call in einem anderem script. Dort werden zusammegefasst, sortiert, formartiert und als JSON string (voher in eine JSON datei geschrieben) als Variable gespeichert. Diesen String uebergebe ich in der Haupt html Datei an "gantt". (code snip)

    Wie du sehen kannst uebergebe ich hier den Pfad zur data2.js (JSON) zum Einen und zweitens den generierten JSON string. Ersteres ist nun nicht mehr moeglich, da ich keine dateien mehr auf dem Server speichern kann. Beide Argument landen in options.source oder options.test

    Code
     $(".gantt").gantt({source: "https://PATH/js/data2.js", test: myJsonString})

    Hier nen test JSON string, welchen ich erzeugen lasse. Meiner Meinung nach ok

    Code
    [{"uid":"1","name":"HOPPER, Bob","desc":"Branch","values":[{"from":"/Date(1585090800000)/","to":"/Date(1585090800000)/","desc":"SM","customClass":"ganttGreen"},{"from":"/Date(1586469600000)/","to":"/Date(1586469600000)/","desc":"S","customClass":"ganttRed"}]},{"uid":"2","name":"TALER, Tim","desc":"Branch","values":[{"from":"/Date(1585177200000)/","to":"/Date(1585177200000)/","desc":"P","customClass":"ganttBlue"}]}]


    Problem ist wie schon gesagt das Weiterverarbeiten.

    getJSON erwartet ein Pfad. Habe aber einen JSON string. Ersetze ich es mit JSON.parse(options.test) funktiert es nicht


    Hoffe du hast die Erleuchtung fuer mich

  • Kommt mir fast so vor, als ob ich selber eine Erleuchtung brauche :D Wenn ich das richtig verstehe, hast Du deine Daten in options.test im JSON-Format, die parst Du erfolgreich in die Variable dataJSON. Und jetzt weißt Du nicht, wie Du eine Callback-Funktion nach dem Parsen aktivieren kannst.

    Wenn Du deinen String mit JSON.parse parst, steht das Ergebnis sofort zur Verfügung und Du kannst sofort mit der Verarbeitung beginnen. Da gibt es nichts Asynchrones und daher auch keine Notwendigkeit für $.parseJSON und einen Callback.

    Also einfach so:

    Oder ist options.test gar kein JSON-String sondern eine Javascript-Struktur aus Arrays und Objekten?

  • Hallo Sempervivum. Danke fuer die schnell Antwort. Leider geht es nicht auf diesem Weg. Mit diesem Ansatz geht es nur einen winzigen Schritt weiter, da in der naechsten variable createContainer ein Objekt erwartet wird, welches ich aber mit auschalten von jQuery.getJSON(options.source, function(rData) nicht mehr habe. Vieleicht haette ich besser beschreiben muessen oder mehr quellcode zu Verfuegung stellen sollen.

    Wie dem auch sei. Ich habs geloest. Anstelle von jQuery.getJSON(options.source, function(rData) {}); habe ich jQuery(function() {}); eingesetzt. Wichtig war halt nur das die Funktion durchlaueft und returned.

    Danke nochmals

    Code

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!