Die Flexperten Herrlich & Ramuschkat

Coldfusion + JavaScript: SerializeJSON(), eval() und führende Nullen

Es gibt aber auch manchmal Fehler, da muss man erstmal drauf kommen. Bei einem Kunden werden Hexadezimale Identifier fester Länge verwendet, was ich jedoch nicht wußte, auch mit führender Null (z.B. “0437EB6A4A4E2103”)! Nun wurden die IDs zusammen mit anderen Daten als Struct mittels SerializeJSON() codiert und an eine JavaScript-Funktion übergeben (cfajaxproxy läßt grüßen…). In der JavaScript-Funktion wurde dann mittels eval() das ganze wieder in ein JS-Objekt decodiert. Jetzt kommt der Clou mit der führenden Null: JavaScript interpretiert den Wert des Indentifiers dann als oktalen Wert, wegen der Null am Anfang! Bei der folgenden Verarbeitung hat’s dann immer mal wieder gekracht, nämlich dann, wenn ein Benutzer eben den Identifier mit führender Null hatte.

Der einfachste Weg für uns war, einfach vor dem Serialisieren einen Buchstaben, bzw. ein Sonderzeichen dem Identifier voranzustellen und dann nach dem Decodieren diesen wieder zu entfernen. So nimmt JavaScript immer an, das es sich um einen Textwert handelt.

Noch keine Kommentare

Einen Kommentar schreiben