powerbook_blog

klein, praktisch, unverdaulich seit 2004

[blog]notiz Ajax oder doch lieber Persil.

| 4 Kommentare

Kennt jemand Wayne’s World? Die Szene, wo Garth verdeutlich, dass er Veränderungen hasst? Naja, so ähnlich geht es mir immer wieder, wenn ich webtechnisch etwas verändert. Ich habe noch fleissig Tabelle gezimmert als alle schon fleissig Layers und divs verteilt haben. Den Begriff Web 2.0 hasse ich. Nein, nicht weil das gerade populär ist, eigentlich nur, weil ich immer noch auf dem Stand von Web 0.5 Beta bin.

Seis drum. Seit nunmehr zwei Jahren bastle ich für einen Kunden eine Geschichte, die seinem kleinen Unternehmen helfen soll, bestimmte Aufgaben zu bewältigen. Er selbst nennt die Software Warenwirtschaft, ich persönlich favorisiere die Bezeichnung Individuelle Software zum Erfassen von Lagerbewegungen. Das Ganze basiert auf PHP und MySQL und ist, wie meist bei solchen Projekten, organisch gewachsen.

Dieses Intranet-Dings hat nun u.a. ein Formular, wo mein Kunde die Bestellungen seiner Kunden erfassen kann. Aufgebaut wie ein gewöhnlicher Bestellzettel trägt man am Spaltenanfang zunächst die gewünschte Artikelnummer ein. Weiss man die Nummer nicht aus dem Kopf, so kann man nach eben dieser Nummer auch suchen. Popup-Fenster sind mE ein Usibility-Killer, kommen mir somit nicht auf die Seite, also habe ich ein recht perverses Konstrukt geschaffen (jaja, web 0.7 RC2 mäßig):

Ich habe ein verstecktes div, in dem ein iframe eingebettet ist. Das div erscheint an der Stelle, wo der Benutzer auf die entsprechende ‚Suchen‘-Schaltfläche klickt, lässt den Benutzer nach Artikeln suchen und schliesst sich dann – nach dem Übernehmen des Suchergebnisses. So weit so gut. Der Wunsch meines Kunden ist mir Befehl. So hatte er geäußert, dass der Focus auf der Eingabemaske – sprich dem Form-Text-Element – des erscheinenden Fensters liegen sollte.

Klar, kein Problem – ich mag ja Javascript. Kann man ja alles steuern. Der Kunde setzt aber in seinem Laden Netscape 7.1 ein. Sicherlich lässt sich darüber streiten, ob das sinnvoll ist – Fakt ist jedoch, dass alle seine Angestellten, nein keine Geeks, sondern ganz normale Menschen eben, damit arbeiten und somit auch ein Browser-Wechsel nicht unbedingt angebracht ist. Dieses Netscape 7.1 verhält sich aber bei dem Setzen des Focus in dem iframe sehr seltsam. Es verschiebt die eingebettete Seite, so dass man das Textfeld selbst erst zu sehen bekommt, wenn man eine Eingabe tätigt. Na doll.

Ich habe ein Weilchen herumprobiert und schliesslich Ben gefragt, ob er eine Idee hätte. Der meinte da recht trocken, ich solle es doch mal mit Ajax. Mein scheeler Blick ist scheinbar durchs GTalk-Fenster hindurchgegangen, denn er nannte mir auch gleich ein kleines nettes Beispiel, was mir zeigen sollte, dass das alles kein Hexenwerk sei.

Diese Beispiel (AJAX Navigation) hat mich dann auch ganz flugs überzeugt. Coole Sache, dieses Ajax. Per Javascript den Inhalt eines divs austauschen und dabei lustig auf PHP zurückgreifen. Super Sache! Innerhalb von zwei Nächten hatte ich dann auch meine Anwendung auf diese Ajax-Funktion umgestellt. Und ich war stolz auf mich wie Oskar! Das sah nicht nur gut aus, nein, das fühlte sich nicht nur gut an, das liess sich auch prima bedienen (Nett ist u.a., dass man den Focus jetzt auch ganz bequem setzen kann, in dem man ein Bildchen mitlädt, was bei einem onload den Focus auf das gewünscht Feld setzt, das minimiert, die Anzahl der Javascript-Zeilen ungemein, wenn man die gleiche Maske an unzähligen Stellen aufruft). Umgehend hatte ich dem Kunden ein Update zugeschickt und wollte eigentlich nur Lob hören.

Der fand das Ganze auch schick und nützlich. Allerdings hatte er zunehmend mit Abstürzen von Netscape zu kämpfen. In der Regel schmierte der Browser ab, wenn innerhalb der mittels Ajax zurückgegebenen Inhalte ein oder mehrere Umlaute vorkamen. Auf meiner DOS-Mühle konnte ich das nicht ganz so häufig reproduzieren, aber letztendlich kam es auch bei mir hin- und wieder vor. Der Witz dabei (ja, man mus solche Sachen doch mit Humor nehmen), dass der Browser nicht immer beim gleichen Event abstürzte, manchmal liess er sich auch Zeit, so dass ich das Problem lange suchen musste (Zudem man aus der Meldung des Absturzes ja auch nicht wirklich etwas herauslesen kann).

Irgendwann habe ich dann mal das Encoding der Seite von ISO-8859-1 auf UTF-8 gesetzt. Und siehe da – keine Abstürze mehr. An diesem Punkt zeigt sich aber ganz deutlich, dass man sich doch im Vorfeld genauer über neue Technologien informieren sollte. Hätte ich dies getan, so wäre ich ziemlich fix darüber gestolpert, dass AJAX immer UTF-8 zurück liefert. Sicherlich muss Netscpae nicht gleich abstürzen, nur weil man auf einer ISO-8859-1-Seite einen Block UTF-8 einsetzt, ansatzweise habe ich dafür ja durchaus Verständnis (Firefox grinst darüber übrigens nur, dem macht das gar nichts).

Also habe ich beschlossen, die Seite mal eben auf UTF-8 umzustellen. Mal eben… Die reinen Textseiten sind ja kein Problem. Das geht ja flugs. Aber die Umlaute in den PHP-Quellen (da hätte ich mal nicht so schlampen sollen). Natürlich liegen die Daten in der Datenbank jetzt im falschen Format vor, was nicht so dramatisch wäre, wenn die Suche noch Umlaute finden würde. Tut sie nicht. So werde ich auf dem Kundenserver jetzt mal auf MySQl 4.1 (oder 5.0) updaten müssen, dann klappt das mit dem UTF-8 auch prima in der Datenbank. Bei der Gelegenheit kann ich auch gleich dem Apache und PHP mitteilen, dass UTF-8 jetzt die Standard-Sprache ist.

Ziemlich langer Text für eine ziemlich kurze Erkenntnis: Neue Projekte setze ich jetzt nur noch als UTF-8 auf.

4 Kommentare

  1. Und der Kunde bezahlt das alles?

  2. wie vertraut! ich muss feststellen es ist erschreckend wie sehr sich unsere programmierkenntnisse / -arbeitsweisen ähneln.

    ok, du kannst jetzt AJAX. und zu UTF-8 muss ich mich immer noch zwingen.

    aber die software-projekte an denen ich arbeite sind auch „organisch gewachsen“.

    wir „software ökos“ 😉

  3. jein nicht alles, aber einen teil. hängt aber auch mit unserem vertrag zusammen. niedriger stundensatz, dafür alles nach aufwand. bislang fahren wir damit beide gut und sind glücklich.

  4. Den Umstieg auf UTF-8 halte ich sinnvoll, im Grunde genommen ist der Unicode-Weg der Weg aus dem ganzen Codierungskuddelmuddel…

    Allerdings scheinen auch einige Browser bei Ajax-Datenübertragungen kein UTF-8 zu liefern
    (bisher nur IEs erwischt)…

    So existiert das Problem witerhin…

Schreib einen Kommentar

Pflichtfelder sind mit * markiert.