PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ajax und sein Encoding-Versuch



BlueJay
24-03-2007, 18:16
Hallo Leute,

ist euch schon mal folgendes Ajax-Problem aufgefallen?

Ausgangslage:
alles utf-8 codierte Seiten, reply an Ajax wird auch via header ge-utf-8tet

Methode1: Daten (Textzeile) einmal via form, get und textarea an Server submittet
Methode 2: selbe Daten aus Textarea abgepflückt und via Ajax- HTTPRequest GET rübergejaxxt.


Was kommt auf dem Server an?

Umlaute : Ergebnis beider Methoden auswertbar
Leerzeichen: im Prinzip Ergebnis beider Methoden wie erwartet
+ (plus) : Beim Ajaxxen via FF 2.0 und Konqueror werden die zu Leerzeichen umgewandelt!

Das urlencode des HTTP-Requestes/urldecode des PHP-Pärchen scheint hier nicht richtig zusammenzuarbeiten, und da beim Form-Submit alles korrekt beim Server ankommt, frage ich mich, was macht der Ajax-HTTP-Request da mit meinen Daten?

Beispiel kann ich leider nicht zeigen (ungelegte Eier)
aber Teststring ist:


Öhi + Änne mögen 1+1, oder auch nicht?

Es spiel für das Ergebnis keine Rolle, ob man die Daten vor dem ajax-Versand nochmal escaped oder nicht.

Habe hier noch ein Beispiel gefunden: gebt mal den Testtext ein, selber Effekt, obwohl das Ganze via POST geschickt wird.

http://www.captain.at/howto-ajax-form-post-request.php

Haben die Macher vom HTTPRequest etwa verschlabbert, beim encoden ein + in ein %2B umzuwandeln? Kann man das "eigenmächtige" urlencoden abfangen, um den Fehler (urlencode nicht form-kompatibel), der schon bereits im Javascript von FF2.0 auftritt, zu patchen?

Der vorläufige Würgaround sieht derzeit so aus:



function zeile_jaxxen()
{ raus=document.form1.rein.value;
raus=raus.replace(/\+/g, "%2B");
raus=encodeURIComponent(raus);
ajax(req2,"update.php",'keep='+spiel+','+ich+','+raus);
document.form1.rein.value='';
}


Jemand 'ne bessere Idee?

so long,
BlueJay