Avatar billede rtfm Nybegynder
27. marts 2006 - 21:54 Der er 13 kommentarer og
1 løsning

Ajax og specielle tegn

Jeg har pt. et problem med en gang Ajax, hvor jeg simpelthen ikke kan få få vist æ, ø og å. Det bliver bare til spørgsmåltegn. Jeg har læst mig lidt frem, og mange steder anvendes escape(). Det kan jeg sådan set også godt få til at fungere, men når jeg så vil udskrive det hentede data, ja så er det selvfølgelig escaped, og det set jo ikke så godt ud.

Hvordan kommer jeg udenom det?
Avatar billede mclemens Nybegynder
27. marts 2006 - 22:07 #1
? du kan ikke køre strengen igennem unescape(string); inden du udskriver ?
Avatar billede mclemens Nybegynder
27. marts 2006 - 22:08 #2
hov, sorry troede du mente printede(udskrev) på skærmen :P
Avatar billede grunken Nybegynder
27. marts 2006 - 23:35 #3
Ændrer det sig ikke til det bedre hvis du bruger html entiteterne for disse ?

ex. php :

htmlentities($minstreng);

noget andet kunne være at javascript fortolkeren var gladere for en gang oktal værdier : her er et hurtigt eksempel :-)

<?php
    $streng    = "æøåÆØÅ";
    $htmlen    = htmlentities($streng);   
    $oktal    = str_replace(array("æ","ø","å","Æ","Ø","Å"), array("\\346","\\370","\\345","\\306","\\330","\\305"), $streng);
   
   
    echo "<script type=\"text/javascript\">"
            . "document.write('original : " . $streng . "<br />htmlentities : " . $htmlen . "<br />oktal : ". $oktal ."');"
        ."</script>";
?>
Avatar billede arne_v Ekspert
27. marts 2006 - 23:56 #4
ÆØÅ som spørgsmålstegn plejer at betyde ISO-8859-1 fortolket som UTF-8
Avatar billede rtfm Nybegynder
28. marts 2006 - 00:12 #5
Altså, det jeg gør er at sende et request til en php fil, som så giver et output af forskellig slags - ofte indeholdende æøå. Viser jeg denne fils output direkte, så fungerer det fint nok, men idet jeg gør det gennem Ajax, bliver de til spørgsmålstegn. Og gennem meta-tags'ne er beder jeg den ellers om at fortolke det som ISO-8859-1. Kan man på en måde også bede JavaScriptet om at fortolke det som ISO-8859-1? Det kunne måske være det, der var problemet.
Avatar billede olebole Juniormester
28. marts 2006 - 15:17 #6
<ole>

Det kommer anpå, hvordan du bruger AJAX ... om du returnerer data formateret som XML eller som f.eks. JSON - eller evt. en kombination af disse

/mvh
</bole>
Avatar billede rtfm Nybegynder
28. marts 2006 - 16:55 #7
Jeg kan se, at det kræver et eksempel:

ajax_ex1_inc.php?sid=1 returnerer blot en simpel tekst streng, som er den, hvori æøå kan forekomme.

<script type="text/javascript">

var request;
var dest;

function processStateChange(){
    if (request.readyState == 4){
        contentDiv = document.getElementById(dest);
        if (request.status == 200){
            response = request.responseText;
            contentDiv.innerHTML = response;
        } else {
            contentDiv.innerHTML = "Error: Status "+request.status;
        }
    }
}

function loadHTML(URL, destination){
    dest = destination;
    if (window.XMLHttpRequest){
        request = new XMLHttpRequest();
        request.onreadystatechange = processStateChange;
        request.open("GET", URL, true);
        request.send(null);
    } else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
        if (request) {
            request.onreadystatechange = processStateChange;
            request.open("GET", URL, true);
            request.send();
        }
    }
}
</script>

<span onclick="loadHTML('ajax_ex1_inc.php?sid=1', 'sinfo')">Vis info om SID 1</span>

<br><br>
<hr noshade size=1>

<div id="sinfo">Endnu ingen beskrivelse!</div>

Nogle idéer?
Avatar billede olebole Juniormester
28. marts 2006 - 17:44 #8
Du har ikke kontrol over noget, hvis du bare sender en 'simpel tekststreng' retur. Du bør formatere den i XML, JSON eller en kombi af de to
Avatar billede rtfm Nybegynder
28. marts 2006 - 18:54 #9
Hmm, ok. Må jo nok erkende, at det er første gang jeg roder mig ud i noget som helst Ajax. Men er det noget du kan give et eksempel på?
Avatar billede olebole Juniormester
28. marts 2006 - 19:02 #10
Vil du bruge AJAX, bør du kunne - eller først sætte dig ind i: HTML, XML, CSS, DOM, JavaScript og XMLHttpRequest  :)
Avatar billede grunken Nybegynder
28. marts 2006 - 20:27 #11
:o)

Long time no see ole - du har ret i at datastruktur er en go idé, og det bliver yderst vanskeligt at returnere data i i streng form only!

Men ville overenstående så ikke ske alligevel?

- og ville den hurtige løsning ikke være i frem og så fald at arne_v har ret at smide en utf8_encode() på strengen ?

- og JA, indrømmer gerne at jeg ikke lige pt. har læst overmeget om AJAX - da jeg lige p.t. mener at det ikke kan gøre synderligt meget mere for mig end en iframe der severer data :-)
Avatar billede rtfm Nybegynder
02. april 2006 - 13:38 #12
Prøvede med lidt af hvert, men uden held. Fik det ikke til at virke med utf8_encode(), og de andre svar føler jeg ikke var særlig anvendelige. Havde regnet med, at få nogle lidt mere uddybende svar, men det var ikke lige tilfældet. Lige meget - klarer mig bare med en iframe...
Avatar billede mrjonez Nybegynder
08. april 2006 - 18:49 #13
Prøv at smide følgende ind i toppen af det dokument du prøver at æde med XMLHttpRequest objektet:
<?php header("Content-Type: text/html; charset=iso-8859-1");?>

dette kræver selvfølgelig at det er php/html dokument du vil vise...
Avatar billede rtfm Nybegynder
08. april 2006 - 22:24 #14
Hvor dum kan man være - hvorfor har jeg ikke tænkt på det noget før. Nå, men i hvert fald havde mrjonez løsningen, så velfortjente point til ham.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester