• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Ajax funktioniert nur in Firefox

haiflosse

New member
Ich verwende folgenden Beispielcode für Ajax
HTML:
<!DOCTYPE html>
<html>
<body>

<div id="demo">
<h2>The XMLHttpRequest Object</h2>
<button type="button" onclick="loadDoc()">Change Content</button>
</div>

<script>
function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "ajaxAntwort.txt", true);
  xhttp.send();
}
</script>

</body>
</html>

Der Code funktioniert aber nur im Firefox Browser. Im IE und Edge wird die Textdatei nicht angezeigt.
Hoffe es kann mir jemand weiterhelfen.
Vielen Dank
 
Ich habe es nur lokal ausgeführt bzw. was ich gemeint mit Server oder file-Protokoll?
Danke
server: du tippst in die adresszeile sowas wie http://www.mein.server.de/datei.html egal ob das jetzt ein lokaler server ist oder nicht.
file-Protokoll: du doppelklickst auf eine datei in deinem verzeichniss und in der adresszeile steht sowas wie file://datei.html
das erste ist dasd http protokoll mit status
das 2. ein pseudo-protokoll. auf jedenfall liefert es keinen http-status
 
Vielen Dank für die Antwort.
Ich habe es als File ausgeführt ohne Server, d.h. mit file://..... Dies sehe ich aber nur im Edge oder Firefox. Beim IE habe ich den normalen Windows Pfad d:\datei....
Wenn ich es über einen Server durchführe funktioniert es in jedem Browser.
Warum ist dies so, bzw. funktioniert es im Firefox auch ohne Server.
Danke für eine Antwort
 
Wenn ich es über einen Server durchführe funktioniert es in jedem Browser.
Warum ist dies so, bzw. funktioniert es im Firefox auch ohne Server.
weil ff auch mit file-protokoll den http status auf 200 setzt. da es einen http status 0 aber nicht gibt und dieser idR. beim file-protokoll gesetzt ist, bzw. die initialisierung mit 0 nicht mehr verändert wird, ist es kein problem auf 0 oder 200 abzuprüfen
 
Wenn du also
Code:
if (this.readyState == 4 && (this.status == 200 || this.status == 0)) {
verwendest, sollte es auch im IE funktionieren. Aber sicherer ist es sowieso, wenn du dir einen lokalen Webserver aufsetzt. Dann hast du realistischere Bedingungen für deine Entwicklungen.
 
Zurück
Oben