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
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