Opdatere value af TEXTAREA med AJAX = Æ Ø Å problem

Tags:    javascript

<< < 12 > >>
Hej!

Jeg styrer et hjemmelavet forum, hvor jeg bl.a. bruger AJAX i forbindelse med når folk vil "quote" en post. Istedet for at lave en ny sideåbning, så bliver et textarea synligt i bunden, og det indlæg ID de har klikket "quote" på, bliver herefter indlæst i textarea'en med AJAX, og så med nogle [QUOTE] [/QUOTE] tags omkring, som man kender fra rundt omkring.

Det virker også fremragende. Problemet er bare at når det indlæg man vil quote, indeholder f.eks. ´ eller æ, ø eller å (eller ÆØÅ), og sikkert også andre tegn.

Jeg har forsøgt mig med diverse replace funktioner i ASP, f.eks. at replace "æ" med #230; eller aelig; eller sågar Chr(145). Ingen af metoderne virker efter hensigten, der bliver bare skrevet f.eks. #230; i mit textarea. Hvis jeg slet ikke laver en replace, kommer der bare et ?-tegn frem istedet for de danske tegn.

Min replace virker fint sålænge det er innerHTML der skal opdateres i f.eks. en span eller div, men når det er value af et textarea, så fejler den altså.

Fold kodeboks ind/udKode 


Er der nogen der ved hvad jeg skal replace med, for at en textarea box kan forstå at den skal vise Æ, Ø eller Å?


Indtil videre har jeg været nødt til at lave en replace der udskifter f.eks. æ med ae; og ø med oe; osv., og så når indholdet udskrives på forum'et igen, erstattet den ae; med æ, oe; med ø osv. Det er ikke helt optimalt, men for brugeren der laver et quote, ser oe; lidt bedre ud med f.eks. #230;


PS: Har fjernet &-tegnet fra ascii koderne, da det her forum konverterer f.eks. & #230; til netop "æ", så det ser lidt sjovt ud i mit indlæg :)


Edit:
En mulig løsning er dog at opdatere f.eks. en div, med HELE textarea koden inkl. value, sådan her (istedet for kode-eksempel oven over, som kun opdaterer value i en eksisterende textarea):

Fold kodeboks ind/udKode 


Og med den her kode, SÅ virker de danske tegn fint. Derfor jeg tror det har noget at gøre med value for textarea'et, siden mit første kodeeksempel ikke virker optimalt med danske tegn.



Indlæg senest redigeret d. 07.02.2008 09:43 af Bruger #12384
12 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 12 karma
Sorter efter stemmer Sorter efter dato
Hey Klaus,
hvad sender du af response til den?
de par gange jeg har skulle opdatere et element (dog, div's), har jeg i min backend udsendt det tegnsæt der skal benyttes for at fortolke æøå, hvilket har ordnet det :)





Hej Klaus,

Problemet og løsningen er beskrevet her:
http://lists.w3.org/Archives/Public/www-math/2003Jul/0009.html

Med venlig hilsen
Ieet





Det du skal sikre dig er at dine dokumenter alle forstår den sammme encoding.
Når du sender din ajax, til serveren skal du sætte en header som følgene:
headers['Content-type'] = 'application/x-www-form-urlencoded'; charset='UTF-8');

På serveren kan du så vælge om du vil arbejde direkte i 'UTF-8' eller kovertere til serverens sprog og så igen convertere til 'UTF-8' inden du sender det til siden igen.

Den anden ting du skal tænke på er at det oprindelige dokument som browseren for at se skal have en meta tag der for tæller browseren hvilket sprog den for severet.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Håber at du forstår hvad det er at jeg skriver.
Jeg kan desvære ikke skrive asp koder og derfor ikke det du skal bruge server side.



Hej
Jeg har siddet med samme problem, og har en bud på problemet og især løsningen.

Jeg brugte først GET til at sende data med. altså overførte data direkte i min url til xmlhttprequest.

Det virkede i firefox.
Det haltede i Opera
Det f*ckede helt op i IE.

Så skiftede jeg til POST
(Se fx eksempel her: http://www.openjs.com/articles/ajax_xmlhttp_using_post.php )
- og nu fungerer det upåklageligt over hele linjen!

Det ser altså ud som om, at IE på en eller anden måde får f*cked æøå op når man bruger GET.

Håber det kunne hjælpe!
Mvh
Christian Liljedahl



Ken,
Hvad tænker du med "respons"? Det "AJAX" script jeg bruger til at hente indholdet med, eller selve indholdet fra databasen, du mener?



selve det indhold som ajax scriptet henter, fra en fil der forbinder til din database.
hvor får ajax scriptet dataene fra?



Ajax scriptet får indholdet fra min MySQL database, hvor alle indlæg i forumet ligger.

I databasen ligger teksten gemt som normal tekst, med æøå osv., og det vises fint i selve forum indlæg. Det er kun når jeg henter det med Ajax at jeg skal lave en replace for at få det vist korrekt på siden, så laver jeg denne replace (har fjernet &-tegnet igen, for at dette forum ikke selv laver det om):

Fold kodeboks ind/udKode 


Herefter bliver æøåÆØÅ vist korrekt på min side, i en span eller div, via innerHTML.

MEN, når jeg vil opdatere VALUE for et TEXTAERA, så hjælper det ikke med ovenstående replace. Det ender så bare med at den udskriver & #230; (uden mellemrum) i textarea'et, og det ser ikke så pænt ud. Undlader jeg at bruge replace'en, vil der istedet for de danske tegn, bare være ?-tegn.

Håber det hjalp :)



Tak for linket Ieet,

Vil det sige jeg skal tilføje encoding="iso-8859-1" til min ajax funktion, et eller andet sted?

Fold kodeboks ind/udKode 




Du skal tilføje encodingen i din forum_getpost.asp :)



Tak for forslaget Ken.

Jeg har prøvet at tilføje følgende øverst i min forum_getpost.asp, som foreslået her: http://www.w3schools.com/xml/xml_encoding.asp

Fold kodeboks ind/udKode 


Desværre betyder det, at jeg nu bare får ovenstående stump kode med i mit textarea, altså den bliver indlæst via min xmlHttp.responseText på samme måde som selve det inhold der hentes fra databasen.

Jeg prøvede også med følgende:
Fold kodeboks ind/udKode 

(samt UTF-8) - men den gjorde ingen forskel.


Har du flere pointers jeg kan arbejde ud fra? :D

For god ordens skyld, er her indholdet af min forum_getpost.asp.

Fold kodeboks ind/udKode 




<< < 12 > >>
t