Rolf B: csv-string in Javascript

Beitrag lesen

Hallo Linuchs,

aus PHP heraus einen JavaScript-String zu erzeugen ist eine knifflige Sache, man schlägt sich dann mit den Quirks beider Sprachen herum.

Ein JSON String macht weniger Kummer, ist aber auch deutlich größer, weil für jede Row die Spaltennamen gespeichert werden. Bei 10 Rows kein Thema, bei 1000 schon eher. Das ist JavaScript, das über die Leitung und durch den Parser muss. Zur Reduktion des Datenvolumns kannst Du mit fetch_row arbeiten, das erzeugt nur numerische Keys und json_encode macht ein Array draus, kein Objekt. Der Code, der das verarbeitet, ist dann schlechter lesbar (weil er auf Spaltennummern statt Spaltennamen zugreift), aber das kann man mittels eines Adapters kapseln.

Eine andere Möglichkeit kann darin bestehen, einen Nonscript-Scriptblock zu verwenden. Das ist in HTML 5 völlig ok (in HTML 4 nicht). <template> als Container geht nicht, da geht der HTML Parser ran.

<script id="ortsliste" type="text/csv">
ort_id;land_kz;plz;ort_name
208;D;64569;Nauheim
13568;D;64521;Berkach
13635;D;64521;Wallerstädten
</script> 

Diesen Scriptblock kannst Du mit document.getElementById("ortsliste") (oder $("#ortsliste")) lokalisieren und den Textinhalt in einen String holen. Ob Du in deiner DB Ortsnamen hast, die einen Zeilenumbruch oder ein Semikolon enthalten, musst Du selbst wissen. Strings mit Zeilenumbruch drin sind übrigens ein Killer für viele CSV Parser, weil sie zuerst nach Zeilenumbrüchen suchen ohne auf Anführungszeichen zu achten, und dann die Zeilen in Spalten zerlegen.

Rolf

--
sumpsi - posui - clusi