Zum Inhalt springen

Hamunsch

Mitglieder
  • Gesamte Inhalte

    17
  • Benutzer seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

  1. Danke, bitte nicht falsch verstehen, ich bin wirklich für jeden Tip dankbar.
  2. Danke für die Hinweise. Das mit dem Objekt ist eine Lösung, die ich in einem anderen Forum fand, nachdem ich stundenlang verzweifelt den Fehler suchte und nichts, aber auch gar nichts fand. Bitte keine Rückschlüsse auf meine Kenntnisse aus den 20 Zeilen Code ziehen, die man hier sieht. Ich habe einfach den aktuellen Stand gepostet, nachdem ich das Ding mehrfach zerschnippelt, gelöscht und wieder zusammengebaut habe. Die Idee mit dem Objekt war die letzte verzweifelte Tat, weil ich nicht weiterkam. Und die habe ich aus einem Forum von einem anderen User, der zwar nicht "Memento" heisst, sich aber auch ganz siecher war, dass seine Lösung funktioniert, und dass man mit seinem Weg durch eine Objekt-Initialisierung, die Anzahl der Elemente mittels length auslesen kann. Da nicht, aber auch gar nichts bisher funktionierte, habe ich es einfach mal versucht und nachdem dies Scheiterte hier den letzten Stand gepostet. Ich weis was ein Objekt ist, ich weis was ein Array ist. Ich programmiere seit 20 Jahren Beruflich, schrieb Codes in PHP, C#, Visual Basic, Batch-Programmierung, kenne OOP und Prozedurale Programmierung. Die ersten Programme schrieb ich auf einem C64. Es mangelt mir wirklich nicht an Grundlagen. Eher bin ich einfach wieder etwas raus, weil ich in den letzten Jahren nicht mehr viel Programmiert hatte, da ich andere berufliche Projekte hatte. Ich hatte oben auch bereits in den Kommentaren angedeutet, dass ich es bereits mit ganz normalen Arrays probiert habe. OK, war nur am Rande und mein Fehler dass es nicht offensichtlich ist. Also bitte nicht den Fehler machen, jemanden an 20 Zeilen Code zu beurteilen, die nach 30 Stunden Frust und Verzweiflung herauskamen. Alleine meine Hauptdatei enthält 500 Zeilen Javascript-Code der wunderbar funktioniert. Es gibt mehrere Stellen an denen ich genauso per AJAX übermittelte JSON-Strings (ohne eval) problemlos in Arrays umwandelte. Nur hier eben nicht. Irgendwo war vermutlich ein falsches Zeichen benutzt worden. Deswegen muss ich aber nicht erneut Grundlagen erlernen! Ich bin dankbar für die Hinweise, haben sie mir zumindest bestätigt, dass das Objekt ein Holzweg war. Ich habe den ganzen Kram jetzt gelöscht und wieder einmal erneut programmiert und diesmal klappte es. Scheinbar muss irgendwo ein klitzekleiner Fehler gewesen sien, den ich übersah. Eval entstand übrigens aus einem anderen Problem, weil ich mit JSON.parse an eben dieser Stelle ebenfalls Probleme hatte, die ich in hunderten anderen Codezeilen nicht hatte. Um Eval kümmere ich mich auch noch. Das hier ist ja auch nicht das finale Ergebnis. Dies ist jetzt mein aktueller Code (Ja, eval ist noch drin, darum kümmere ich mich als nächstes ) var artikelliste = []; $(document).on("focus", ".zeile2", function(){ if(this.value!=''){ $('#BTartikel'+id).fadeIn(500); } }); $(document).on("blur", ".zeile2", function(){ $('#BTartikel'+id).fadeOut(500); }); $(document).on("click", ".BTartikel", function(){ $.post( 'controllers/artikelQuery.php', {action: "loadArtikelwahl"}, function(result){ var i= 0; result.forEach(function(entry){ inhalt = eval(entry[0]); id = eval(entry[1]); artikelliste[i] = []; artikelliste[i]['id'] = id; artikelliste[i]['zeile2'] = inhalt[1].value; artikelliste[i]['inhalt'] = inhalt; i++; }); $('#monitorWrapper').fadeOut(500); $('#artikelliste').fadeIn(500); }, 'json' ); }); $(document).on("keyup", "#artikeltext", function(entry){ alert(artikelliste.length); }) Der funktioniert. Der Array lässt sich zählen.
  3. Hallo noch einmal. Nachdem ich mein letztes Problem mit eurer Hilfe lösen konnte, habe ich nun ein weiteres. Ich fülle einen zweidimensionalen Array und möchte diesen dann später, gefiltert, in einer Liste ausgeben. Hier ist der Code: var artikelliste = {}; $(document).on("click", ".BTartikel", function(){ $.post( 'controllers/artikelQuery.php', {action: "loadArtikelwahl"}, function(result){ var i= 0; result.forEach(function(entry){ inhalt = eval(entry[0]); id = eval(entry[1]); artikelliste[i] = {'id':id,'zeile2':inhalt[1].value,'inhalt':inhalt}; // alternativ auch bereits einzelne Zuordnung versucht, also: // artikelliste[i]['id'] = id; // artikelliste[i]['zeile2'] = zeile2; usw. i++; }); }, 'json' ); }); $(document).on("keyup", "#artikeltext", function(entry){ alert(artikelliste.length); for(i=0;i<artikelliste.length; i++){ } }) alert(artikelliste.length); gibt "undefined" aus. Die Schleife wird folglich nicht durchlaufen. Ich möchte offensichtlich nur die erste Dimension des Arrays einmal durchlaufen und dort soll dann geprüft werden, ob ein Eintrag (entry) in "zeile2" vorkommt. Bei Erfolgsfall soll die entsprechende Gesamtinfo (inhalt) in eine Liste geschrieben werden. Wieso kann ich nicht die Länge der ersten Dimension mit length abfragen? Hat jemand eine Idee oder einen Tip für mich? Vielen Dank
  4. Jahaa.. aber ... ... Aus der Datenbank erhalte ich leider nicht nur eine Zeile, sondern mehrere Treffer. Mit folgendem Code habe ich es jetzt geschafft: $(document).on("click", ".BTartikel", function(){ $.post( 'controllers/artikelQuery.php', {action: "loadArtikelwahl"}, function(result){ result.forEach(function(entry){ inhalt = eval(entry[0]) alert(inhalt[1].value); }); }, 'json' ); });
  5. Erstmal vielen Dank für die bisherige Hilfe an alle. Sry fürs Durcheinander.. auf mehrere Antworten zu antworten, wenn schon wieder neue Antworten kommen artet in Chaos aus Ich schaue mir eure Beispiele (Danke für diese) jetzt nochmal an und teste sie aus und gehe auch euren Links mal nach. Ich melde mich danach dann nochmal.
  6. nein, da sind keine Klammern. es kommt direkt die 55 Den 4. Parameter habe ich echt übersehen. OK habe den Datentyp mal eingesetzt: EDIT"Falscher Code", habs korrigiert $(document).on("click", ".BTartikel", function(){ $.post( 'controllers/artikelQuery.php', {action: "loadArtikelwahl"}, function(result){ result.forEach(function(s,i,o){ inhalt = s[1] // [1] ist der Teil mit dem Inhalt, [0] ist die ID des Tabelleneintrags alert(inhalt); }); }, 'json' ); }); es kommt in Firebug folgende Fehlermeldung: SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 3 of the JSON data
  7. Der String in der Datenbank, in der Tabelle ist ja ebenfalls ein JSON-String. Lese ich nun per PHP die ganze Tabelle aus, erhalte ich ja ein Ergebnis, das ich, um es per ajax wieder an die aufrufende Webseite übergeben will, wieder mit json_encode formatiere. Somit habe ich einen JSON-String, der wiederum einen JSON-String (Der inhalt des Tabellen-Feldes) enthält. Ein JSON innerhalb des JSON also. Wieder im Javascript/Jquery angekommen löse ich den übergebenen JSON-String mit parse auf. Ich erhalte ein Array, dessen 2. Position wiederum ein JSON-String ist. Also muss ich dieses Arra-Element ja erneut "dekodieren", also erneut JSON.parse. Die Anzahl der Elemente, di ich in der Tabelle unter "Inhalt" speichere, sind dynamisch, daher habe ich den JSON-String dorthin gespeichert.
  8. Wo wird denn im Beispiel der Datentyp mit angegeben? Ausser dem JSON.parse sehe ich jetzt gerade keinen Unterschied. Ich versuche es mal mit dataType:json
  9. Das Request sieht zuerst so aus: 55,[{"name":"zeile1","value":""},{"name":"zeile2","value":"Produktname"},{"name":"zeile3","value":"Produktbeschreibung"},{"name":"menge1","value":"Anzahl"}] Die ID kann ich mit [0] ja entfernen und den Inhalt mit[1]. aber dann ging es eben nicht weiter. Ich schaue mir dein Beispiel nochmal an und baue das nach.
  10. mit $.parseJSON kommt das Selbe heraus: $(document).on("click", ".BTartikel", function(){ $.post('controllers/artikelQuery.php', {action: "loadArtikelwahl"}, function(result){ result = $.parseJSON(result); result.forEach(function(s,i,o){ inhalt = eval(s[1]) // [1] ist der Teil mit dem Inhalt, [0] ist die ID des Tabelleneintrags alert(inhalt['zeile2']); // erzeugt: "undefined" alert(inhalt[0]['zeile2']); // erzeugt: "undefined" alert(inhalt); // erzeugt: [object Object],[object Object],[object Object],[object Object],[object Object] }); }); });
  11. Ja, in der Theorie sollte es auch klappen. Scheint ja alles korrekt zu sein. Ich vermute mal, der Fehler liegt an einer anderen Stelle, gar nicht in der Nähe dieses Codes. Aber ich finde keinen ofeensichtlichen Zusammenhang. Wenn ich es auf diese Weise versuche bekomme ich immer ein "undefined" anstelle des Wertes. Das verwundert mich ja gerade. Hier mal meine benutzte Funktion: $(document).on("click", ".BTartikel", function(){ $.post('controllers/artikelQuery.php', {action: "loadArtikelwahl"}, function(result){ result = JSON.parse(result); result.forEach(function(s,i,o){ inhalt = eval(s[1]) // [1] ist der Teil mit dem Inhalt, [0] ist die ID des Tabelleneintrags alert(inhalt[0][0]); // erzeugt: "undefined" alert(inhalt[0]); // erzeugt: [object Object] alert(inhalt); // erzeugt: [object Object],[object Object],[object Object],[object Object],[object Object] }); }); }); Zu deiner Antwort weiter oben: Ich hatte neben eval übrigens auch schon JSON.parse getestet. mit dem selben Ergebnis.
  12. Hallo zusammen. Ich arbeite jetzt schon stundenlang an einer JS-Problematik herum und finde meinen Denkfehler nicht. Ich habe die Hoffnung, dass mir hier jemand helfen kann. Ich habe ein Formular per serializeArray an PHP übertragen und in eine mySQLDB übertragen. Der Eintrag in der DB, Varchar, sieht so aus: [{"name":"zeile1","value":""},{"name":"zeile2","value":"Produktname"},{"name":"zeile3","value":"Produktbeschreibung"},{"name":"menge1","value":"Anzahl"}] Diesen Beitrag möchte ich nun wieder auslesen und das klappt nicht wie ich es mir vorstelle. Ich öffne per JQuery.post AJAX die PHP-Datei und lese den DB-Eintrag aus und wandle die empfangenen daten mit JSON.parse um. Soweit so gut. Die Ausgabe der Daten per ALert sehen dann genauso aus wie oben in der DB: [{"name":"zeile1","value":""},{"name":"zeile2","value":"Produktname"},{"name":"zeile3","value":"Produktbeschreibung"},{"name":"menge1","value":"Anzahl"}] Ich kann aber nicht auf die einzelnen Elemente zugreifen. Speziell möchte ich den Eintrag der "zeile2" auslesen. Wandle ich das Ergebnis jetzt mit eval() um, erhalte ich [object Object],[object Object],[object Object],[object Object] und dann komme ich nicht mehr weiter.. Das Objekt als Array ansprechen mit [0] oder ["zeile2"] bringt nur ein "undefined" heraus. Hat jemand einen Tip für mich? Ich glaube die Lösung liegt so nahe, ich sehe sie nur nicht.
  13. Danke. Aber ich habe gerade eben eine simple Lösung gefunden. Ich habe um jedes Item eine Form gelegt mit der ID Form1, Form2 usw.. Wenn ich mit JQuery nun $("form").serialize() benutze, serialisiert er mir alle Formulare und kettet sie selbstständig hintereinander in eine einzige Variable. Durch die Nummerierung kann ich aber dennoch einzelne Items serialisieren. Bisher ist mir kein Problem dadurch entstanden. Falls doch, werde ich mir deine Idee mal ansehen.
  14. Hallo zusammen Ich habe ein Eingabeformular das "Itmes" in variabler Zahl enthält. Ich muss an einer Stelle alle Items gemeinsam in eine DB speichern und dann aber auch jedes Item einzeln. Es sieht ungefähr so auis: <div id="rahmen"> <form id="form" action="" method="post"> <div class="Item"> <input type="text" id="zeile11" class="design zeile1 " name="zeile11" placeholder="Zeile1" /> <input type="text" id="zeile21" class="design zeile2 " name="zeile21" placeholder="Zeile2" /> <input type="text" id="zeile31" class="design zeile3 " name="zeile31" placeholder="Zeile3" /> <button id="1" class="itemSave">Item in Datenbank speichern</button> </div> <div class="Item"> <input type="text" id="zeile11" class="design zeile1 " name="zeile11" placeholder="Zeile1" /> <input type="text" id="zeile21" class="design zeile2 " name="zeile21" placeholder="Zeile2" /> <input type="text" id="zeile31" class="design zeile3 " name="zeile31" placeholder="Zeile3" /> <button id="1" class="itemSave">Item in Datenbank speichern</button> </div> <div class="Item"> <input type="text" id="zeile11" class="design zeile1 " name="zeile11" placeholder="Zeile1" /> <input type="text" id="zeile21" class="design zeile2 " name="zeile21" placeholder="Zeile2" /> <input type="text" id="zeile31" class="design zeile3 " name="zeile31" placeholder="Zeile3" /> <button id="1" class="itemSave">Item in Datenbank speichern</button> </div> </form> </div> Wird der Inhalt eines input-Feldes geändert, wird automatisch der Komplette Inhalt des Formulars (In diesem Fall also alle drei Items) als eine Einheit per JQuery-Ajax in eine DB gespeichert. Nach einem Wechsel der Darstellung werden die Daten aus der DB gelesen und per AJAX wieder eingesetzt. Nun soll der Anwender aber auch die Möglichkeit haben, einzelne Items individuell für spätere Einträge zu speichern. Theoretisch müsste ich jetzt um jedes Item ein eigenes Formular setzen, um es per form.serialize für den ajax-Einsatz zu serialisieren. Forms verschachteln geht aber nicht. In der Datenbank gibt es in der Tabelle ein Feld "inhalt" in dem ich den JSON-Code des Formularinhaltes als varchar speichere. Meine einzige Idee wäre, das einzelne form-Element rauszunehmen, um jedes Item ein Formular zu packen, und beim Speichern des Gesamtinhaltes jedes einzelne Formular zu serialisieren und die Strings dann aneinanderzuketten und als einen einzigen String in die DB zu speichern. Gibt es eine weniger komplexe Alternative?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...