Avatar billede qualon1 Nybegynder
15. juli 2007 - 13:52 Der er 1 kommentar og
1 løsning

bogstaver forvranges når siden kaldes igennem AJAX

Hej

Jeg har en side som jeg opdater med AJAX, men der er nogle problemer med æøå når jeg kalder siden igennem AJAX, men ingen problemer når den hentes normalt...
Min kode ser sådan her ud:

function makeRequest(theurl, elmID, showLoad, clickmenu, pageReload, loadingObj) {
    var http_request = "";
    theurl = theurl+'&request='+Math.random()+'&ajax=1';
   
    if(loadingObj) {
        document.getElementById(loadingObj).style.display = "";
        document.getElementById(elmID).style.filter = "alpha(opacity=20)"
    }
   
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!http_request) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange = function() { alertContents(http_request, elmID, showLoad, clickmenu, pageReload, loadingObj); };
    http_request.open('GET', theurl, true);
   
    http_request.send(null);
}
function alertContents(http_request, elmID, showLoad, clickMenu, pageReload, loadingObj) {

    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            if(http_request.responseText != "") {
                if(elmID != "") {
                document.getElementById(elmID).innerHTML = http_request.responseText;
                if(loadingObj) {
                    document.getElementById(elmID).style.filter = "alpha(opacity=100)"
                }
                }
                if(pageReload == 1) {
                    document.location.reload();   
                }
            }
        } else {
            document.getElementById(elmID).innerHTML = 'There was a problem with the request. Status: '+http_request.status;
        }
    } else {
        if(showLoad == 1) {
            document.getElementById(elmID).innerHTML = 'Loading...';
        }
    }

}

alle æøå bliver bare firkanter osv.
Nogen som kan hjælpe?
Avatar billede qualon1 Nybegynder
15. juli 2007 - 14:05 #1
har fundet en løsning... php skulle bare utf8_encode indholdet
Avatar billede olebole Juniormester
16. juli 2007 - 14:16 #2
<ole>

Det er ikke sikkert, du har ret i den betragtning. Det burde ikke være nødvendigt at utf-encode noget, hvis dine tegnsæt ellers passer ... dvs: Database, server, HTTP-headers, meta-content-type 'header', osv. alle er utf-8 (husk også at gemme dine dokumenter som utf). Ellers udskyder du blot problemerne ... og de skal nok komme igen og undeholde dig  ;o)

Iøvrigt har din kode ikke meget med AJAX at gøre. I AJAX returneres data i XML- eller JSON-format og indsættes med DOM ... innerHTML er en absolut no-no! Desuden bruges _kun_ POST ... _aldrig_ GET  =)

/mvh
</bole>
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