Datei laden mit XMLHttpRequest

soa

Erfahrenes Mitglied
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:

PHP:
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
 
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
 
Hallo ,

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

PHP:
<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...
 
Füge mal einen Doctype ein, z.B. <!doctype html>!
Aber wieso geht es dann, wenn du den dritten Parameter auf true setzt?!
 
Hallo,

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

PHP:
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
 
Zurück