# Datei laden mit XMLHttpRequest



## soa (8. Januar 2011)

Hallo zusammen,

ich versuche eine Datei mit dem XMLHttpRequest Objekt zu laden und bekomme insbesondere im IE 8 beim Einbinden Probleme.

Hier einmal mein Code:


```
var http = createXMLHttpRequest();

function createXMLHttpRequest(){
   
   var http;
   
   
   try
   {
     http = new ActiveXObject("Microsoft.XMLHTTP");
   }
   catch(e)
   {
     try
     {
      http = new XMLHttpRequest();
     }
     catch(e){}
   }
   
   
  if (!http  )
    document.write("Hier kommt die Fehlermeldung");
  else 
        return http;  

}// end of function


function ReadFile(fileUrl) { 



if (http != null ) {

 alert(http.readyState);
    var fileContent; 
        http.open("GET", fileUrl, false);
        http.setRequestHeader(
	      "Content-Type",
      "application/x-www-form-urlencoded");
        http.send(null); 
        fileContent = http.responseText; 

    return fileContent; 
    
 } // http
 else
 alert ("kein Object vorhanden");
    
}// FileRead End
```

Im Firefox funktioniert es gut, wenn ich meine Funktion mit <body onload="" > aufrufe.
Im IE bekomme geht es mit einer Testdatei ganz gut, jedoch wird im richtigen Code
ein Fehler geworfen:

Zugriff verweigert in dieser Zeile   http.open("GET", fileUrl, false);
Die Datei kann nicht geöffnet werden.

Wahrscheinlich liegt es daran, dass mein Request-Objekt noch nicht im richtigen Status ist, wenn versucht wird, die Datei zu öffnen. Allerdings weiss ich nicht, wie ich hier Abhilfe schaffen kann.

Über einen Tipp wäre ich sehr dankbar.


Grüße
Jörn


----------



## ComFreek (8. Januar 2011)

Zeig doch mal deinen Beispielaufruf im IE bzw. Firefox.


----------



## soa (8. Januar 2011)

Hallo nochmal,

es scheint so zu sein, dass IE dringend einen synchronen Request benötigt :http.open("GET", fileUrl, true);
Dann läuft es im IE, jedoch nicht im Firefox.  Warum ist das so ?


Danke


----------



## soa (9. Januar 2011)

Hallo ,

hier ein Beispiel für eine XML-Datei, welche im IE ein "Zugriff verweigert" hervorruft. 


```
<html>
 <head>
  <title>Read XML in Microsoft Browsers</title>
  <script type="text/javascript">
    var xmlHttp = null;
try {
    // Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
    xmlHttp = new XMLHttpRequest();
} catch(e) {
    try {
        // MS Internet Explorer (ab v6)
        xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
        try {
            // MS Internet Explorer (ab v5)
            xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            xmlHttp  = null;
        }
    }
}
if (xmlHttp) {
    xmlHttp.open('GET', 'company.xml', true);
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
            alert(xmlHttp.responseText);
        }
    };
    xmlHttp.send(null);
}
 
  </script>
 </head>
 
 <body>

hallo
 
 </body>
</html>
```

Warum kann IE die Datei, die im gleichen Verzeichnis wie das Script liegt, icht öffnen.

Danke...


----------



## ComFreek (10. Januar 2011)

Füge mal einen Doctype ein, z.B. <!doctype html>!
Aber wieso geht es dann, wenn du den dritten Parameter auf true setzt?!


----------



## soa (10. Januar 2011)

Hallo,

danke für Deine Rückmeldung. Im Übrigen arbeite ich nicht über einen Webserver, sondern offline .
Dies ist die Funktion, die funktioniert:


```
function ReadFile(fileUrl) {
    var req;
    var fileContent;
    // branch for native XMLHttpRequest object
    
    if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        req.open("GET", fileUrl, true);
        req.onreadystatechange=function() {
                                    if (req.readyState == 4) {
                                        fileContent = req.responseText;
                                    }
                                }
        req.send(null);
    }
    else if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.open("GET", fileUrl, false);
        req.send(null);
        fileContent = req.responseText;
    // branch for IE/Windows ActiveX version
    } 
    return fileContent;
}// FileRead End
```

Grüße


----------



## ComFreek (10. Januar 2011)

> Im Übrigen arbeite ich nicht über einen Webserver, sondern offline .


War das auf den Doctype bezogen? Dieser hat nämlich nichts damit zu tun!

Kommt denn eigentlich etwas in der Fehlerkonsole?


----------

