[InfoCon]

Information & Consulting

[Infos][Dienstleistungen][Logbook]
 

Logbuch

unpackToForm und NULL-Werte

Für eine Web-2.0-Anwendung nutzen wir die Funktion »unpackToForm« aus der prototypeUtils-Bibliothek, um Werte aus einer SQL-Datenbank via AJAX und JSON in ein Formular zu übertragen. In den meisten Fällen hat das auch ganz prima funktioniert. In manchen Fällen wurde allerdings das versteckte Feld »id« nicht gesetzt.

Das wiederum hatte zur Folge, daß die Änderungen nicht gespeichert werden konnten, denn auf SQL-Ebene enthielt der Query letztendlich »WHERE id = ''« und effektiv wurde kein Datensatz aktualisiert. Verwirrend war, daß dieses nur manchmal passiert ist, jedoch nicht immer.

Das Problem landete daraufhin bei mir und ich konnte sofort verifizieren, daß die Daten korrekt von der Datenbank via JSON zum Browser gelangen und dort von der Funktion »unpackToForm« verarbeitet wurden. Diese hat allerdings irgendwann die Arbeit versagt. Nach etwas Debugging von JavaScript lag das Problem nackt vor mir: »details: null«.

Der Wert »NULL« von SQL wird korrekt in »null« in JavaScript umgewandelt. Unglücklicherweise geht »unpackToForm« allerdings davon aus, daß die Werte immer Objekte sind und wendet die Methode ».toString()« darauf an. Bei »null« muß das fehlschlagen und damit wurde die Abarbeitung der Wert beendet, wodurch nicht mehr alle Felder im Formular aktualisiert werden.

Ein kleiner Patch sorgt dafür, daß diese Methode nur dann angewendet wird, wenn kein Nullwert vorliegt und in diesem Fall stattdessen ein leerer String verwendet wird.

5.9.2008 20:37 | javascript | permanent link

Zum Kontakformular

© InfoCon   Datenschutz