ugrás a tartalomhoz

Ajax és a charset

1

fórum ajax-xal, prototype-pal

suhajdab · 2006. Júl. 13. (Cs), 12.31
Sziasztok!

Dolgozom egy fórumon. Oldalaim iso-8859-2 kódolással vannak, benne ajax küldi az üzenetet a php-nak. Ha jól tudom ezt a java vagy az prototype már utf-8-ba konvertálja. Ez szép és jó!

De mi történik a plussz jelekkel, illetve a textarea-ban leütött enterekkel?
Mindkét esetben a php oldalon már csak szüneteket kapok :(

Lehet ezt valahogy orvosolni? Nagyon fontos lenne, hogy a + jelek maradjanak, illetve, hogy a '\n'-ből <br> legyen...

Előre is köszönöm a segítséget!

Ui: Itt egy ajax chat amelyben látható a '+' eltünése!
2

talán

Anonymous · 2006. Júl. 13. (Cs), 12.52
urlencode?
3

Java-ban?

suhajdab · 2006. Júl. 13. (Cs), 12.57
Java-ban?

mert a php-ban már nincs meg sem a +, sem a \n
4

Inspirációként...

suhajdab · 2006. Júl. 13. (Cs), 14.46
A java ami küldi az üzenetet:
  1. newMessage: function(event) {  
  2.         oThis=this;  
  3.         if ($('textArea_newMessage').value.length>1) {  
  4.             //alert($('textArea_newMessage').value);  
  5.             new Ajax.Request('forum_comm.php',   
  6.                 { method: 'post', parameters: 'newMessage='+$F('textArea_newMessage')+'&activeForum='+this.activeForum,  
  7.                 onComplete: function (request) {  
  8.                     Effect.SlideUp($('div_newMessage'));  
  9.                     $('textArea_newMessage').value='';  
  10.                     $('div_newMessage_img').src='images/dropdown_down.gif';  
  11.                     oThis.updateForum();  
  12.                 }  
  13.                 }  
  14.         );  
  15.         }  
  16.     }  
és a php ami kapja:
  1. mysql_real_escape_string(strip_tags($_POST['newMessage']))   
és db-be rakja.
6

urlencode továbbra is

Anonymous · 2006. Júl. 14. (P), 11.38
én még nem értem, hogy miért nem nézed meg az ajaxkód által kapott request-et, abból minden kiderül. Az elküldött adatnak url encode-olva kell mennie, azaz a pl. space helyett "+" jel, á helyett %C3%A9, újsorból %0D%0A lesz (win alatt). Mivel itt a postolás nem a browserre van bízva, hanem "kézzel" történik, lehet, hogy nem kódolja el. Az elküldésnél próbáld úgy, hogy: encodeURI($F('textArea_newMessage'))

/l
7

kipróbáltam...

suhajdab · 2006. Júl. 14. (P), 11.49
'newMessage='+encodeURI($F('textArea_newMessage'))

ezt írtam be: 1 + 1 = 2

firebuggal megnéztem és a POST-ban ez ment: newMessage=1%20+%201%20=%202&activeForum=11&_=

sajna az adatbázisban azonban továbbra is ez jelent meg: 1 1 = 2
8

encodeURIComponent

Anonymous · 2006. Júl. 14. (P), 13.35
akkor utolsó esélyként encodeURI helyett encodeURIComponent, firebuggal kipróbáltam, elkódolja a pluszjelet
10

És tudja!! Már csak egy kérdésem volna.

suhajdab · 2006. Júl. 14. (P), 14.05
És igen! Ez az encodeURIComponent bejött!! Köszönöm very much!! :)


És arra van tippetek, hogy a textarea-ban ütött enterekkel mit kezdjek? nl2br nem jött be. Firebug-ban ennek látszik: %0A de nem tudom ezzel mihez is fogjak.
5

Senki sem tud megoldást???

suhajdab · 2006. Júl. 14. (P), 10.40
Ne vicceljetek már!
9

%2B = +

Gáldi Ákos · 2006. Júl. 14. (P), 13.50
Pedig az urlencode lenne a te barátod.

Próbáld ki a csetednél: 1%2B2%2B3=3%2B3
11

Köszönet!

suhajdab · 2006. Júl. 14. (P), 14.20
Köszönöm minden kedves hozzászólónak a segítséget!

A helyes megoldás a sorrendben volt!
Így működik:
mysql_real_escape_string(nl2br(strip_tags($_POST['newMessage'])))