Ajax overrideMimeType im IE8 nicht möglich?

WiZdooM

Erfahrenes Mitglied
Hallo

Ich nutze folgende Funktion um in ein DIV inhalte Dynamisch einzuladen:

Code:
function loadFragmentInToElement(fragment_url, element_id) {
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    try {
        xmlhttp = new XMLHttpRequest();
    } catch (e) {
        xmlhttp=false;
    }
}
if (!xmlhttp && window.createRequest) {
    try {
        xmlhttp = window.createRequest();
    } catch (e) {
        xmlhttp=false;
    }
}

    var element = document.getElementById(element_id);
    element.innerHTML = '<p><em>Loading ...</em></p>';
    element.style.marginLeft = "20px";
    xmlhttp.open("GET", fragment_url);
    try{
        xmlhttp.overrideMimeType("text/html; charset=ISO-8859-1");
    }
    catch(e){
    }
    //xmlhttp.overrideMimeType("text/html; charset=ISO-8859-1");
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            element.style.marginLeft = "0px";
            element.innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null);
}

Dieser Code funktioniert im Firefox tadellos, aber im Internet Explorer ist der Mime-Type immer UTF-8. Schreibe ich
Code:
xmlhttp.overrideMimeType("text/html; charset=ISO-8859-1");
nicht in den Try-Catch-Block, bricht der IE die Funktion an dieser Stelle ab, während der FF ohne Probleme den Mime-Type überschreiben kann.

Ich bin jetzt leider nicht der Profi in Sachen Ajax und Java(script), daher habe ich keinen blassen Dunst, wie ich den IE dazu überreden kann den MimeType nach dem Open zu verändern. Ich hatte es bereits mit setMimeType versucht, aber das führte ebenfalls zu einem Fehler.

Wie kann ich nun den MimeType im IE setzen ?
 
Hi Sven,

das habe ich mittlerweile auch schon probiert:

Code:
xmlhttp.setRequestHeader("Content-Type","text/html; charset=ISO-8859-1");

Der IE8 jedenfalls scheint das geflissentlich zu ignorieren und interpretiert nach wie vor alles in UTF8 aus aus dem xmlhttp.responseText kommt.

Ich glaube der sicherste Weg ist, den ISO-8859-1-Text der Seite, die geladen wird, gleich in UTF-8 zu überführen...


Edit:

Ich bin nach ein wenig rumstöbern zufällig auf diesen Blog gestoßen:
xmlhttpreqoverridemimetype-in-ie7

Als eine Art Workaround habe ich meinen Content, den ich dynamisch dazubinden möchte, einfach (wie in dem Kommentar am Ende des Beitrags empfohlen) in einem UTF-8-XML-File abgelegt. Ist zwar etwas unleserlich durch die ASCII-Codes, aber es funktioniert immerhin.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück