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

[FRAGE] Textfile einlesen mit javascript

DerUrm

New member
Hallo!
Als Anfänger der Javascript-Programmierung stehe ich im Moment vor einer (für mich) nicht lösbaren Aufgabe:

Das Einlesen eines Textfiles über Javascript mit Firefox 41.01 funktioniert einwandfrei.
Das Einlesen eines Textfiles über Javascript mit Internetexplorer 11 funktioniert nicht.

Genaugenommen lese ich eine Datei (wortliste.txt) ein, zerlege sie in einzelne Zeilen, zerlege die einzelnen Zeilen wiederum in kommagetrennte Spalten und fülle damit ein zweidimensionales Array. Funktioniert mit Firefox einwandfrei. Den gesamten Code wil ich niemandem zumuten und deshalb ist hier ein "eingedampfter" Code zu sehen (mein Template aus dem Internet):

--------------
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="language" content="de" />
 
<script type="text/javascript">
 
  var xmlHttp = null;
  // Mozilla, Opera, Safari sowie Internet Explorer 7
  if (typeof XMLHttpRequest != 'undefined') {
      xmlHttp = new XMLHttpRequest();
  }
  if (!xmlHttp) {
      // Internet Explorer 6 und älter
      try {
          xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
      } catch(e) {
          try {
              xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
          } catch(e) {
              xmlHttp  = null;
          }
      }
  }
  if (xmlHttp) {
      xmlHttp.open('GET', 'wortliste.txt', true);
      xmlHttp.onreadystatechange = function () {
          if (xmlHttp.readyState == 4) {
              document.getElementById("ausgabe").innerHTML = (xmlHttp.responseText);
          }
      };
      xmlHttp.send(null);
  }
 
</script>
<title></title>
</head>
 
<body>
<div id="ausgabe">bla</div>
</body>
</html>
--------------

In Firefox zeigt mir das Script beispielsweise an: Testzeile1 Testzeil2 Testzeile3 ...
Im Internetexplorer bekomme ich als Anzeige: "bla"

Ich habe bisher herausgefunden, dass dem folgenden Statement im IE offensichtlich noch ein Event übergeben werden muss:
xmlHttp.[BGCOLOR]onreadystatechange[/BGCOLOR]

Aber hier muss ich als Anfänger hoffungslos passen und hoffen, dass hier im Forum ein Profi so etwas schon einmal angefasst hat. Normalerweise frage ich nicht so schnell in einem Forum nach. In die Lösungsfindung sind nun schon Abende reingeflossen und die Googleserver sind von mir auch schon leergesaugt worden. Vielleicht gibt es auch einen einfacheren Ansatz und ich habe mich verrannt.

Bin froh über jedweden Tipp
DerUrm
 
Zuletzt bearbeitet von einem Moderator:
Das Einlesen eines Textfiles über Javascript mit Firefox 41.01 funktioniert einwandfrei.
Das Einlesen eines Textfiles über Javascript mit Internetexplorer 11 funktioniert nicht.
du öffnest das lokal, über das file:// protokoll ? dann würde das auf einem server ja so nicht funktionieren, bzw. müsste dann auch das textfile dort liegen. sonst https://developer.mozilla.org/en-US/docs/Web/API/FileReader

In Firefox zeigt mir das Script beispielsweise an: Testzeile1 Testzeil2 Testzeile3 ...
Im Internetexplorer bekomme ich als Anzeige: "bla"
weil du das vermutlich über das file:// protokoll erledigst.
das native XMLHttpRequest des ie macht nicht so ohne weiteres einen lokalen request. dafür aber das activeX objekt.
Code:
var xmlHttpRequest = null;
if (window.ActiveXObject)
{
	try
	{
		xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
		...
	}
}
else if (window.XMLHttpRequest)
{
	xmlHttpRequest = new XMLHttpRequest();
}
xmlHttpRequest.open("GET", strFileName, true);
xmlHttpRequest.onreadystatechange = function()
{
  ...
}
 
Woher hast du denn dieser Code-Beispiel. Das ist nicht besonders gut geschrieben: zum einen verwendet es globale Variablen und zum anderen sollte man Code, der auf DOM-Nodes (hier die #ausgabe) zugreift, entweder in ein entsprechendes Event (z.B. onload oder DOMContentLoaded) packen oder hinter die entsprechende Node packen. Letzteres könnte sogar theoretisch dein Problem verursachen. Also pack das <script> hinter das <div>.

Zu deinem Problem: über welches Protokoll siehst du dir denn die HTML-Seite an? Über einen lokalen Webserver und http oder über das file-Protokoll? Steht etwas in der Fehlerkonsole?

PS: XHTML ist tot. Verwende besser html5.

- - - Aktualisiert - - -

Mist... vergessen zu aktualisieren.
 
Perfektes Forum! Innerhalb kurzer Zeit Lösungsmöglichkeiten, von denen ich jetzt schon viel gelernt habe!
Leider funktioniert der Zugriff auf das Textfile mit dem IE11 immer noch nicht. Hier meine Antworten zu euren Tipps:

kkapsner
Woher hast du denn dieser Code-Beispiel. Das ist nicht besonders gut geschrieben: zum einen verwendet es globale Variablen und zum anderen sollte man Code, der auf DOM-Nodes (hier die #ausgabe) zugreift, entweder in ein entsprechendes Event (z.B. onload oder DOMContentLoaded) packen oder hinter die entsprechende Node packen. Letzteres könnte sogar theoretisch dein Problem verursachen. Also pack das <script> hinter das <div>.
Den Code habe ich hierher (letztes Beispiel): https://www.psd-tutorials.de/forum/threads/javascript-textdatei-laden.50880/

Zu deinem Problem: über welches Protokoll siehst du dir denn die HTML-Seite an? Über einen lokalen Webserver und http oder über das file-Protokoll? Steht etwas in der Fehlerkonsole?
Über das File-Protokoll.

Der Hinweis (auch von mikdoe) die Fehlerkonsole zu nutzen, war für mich als Anfänger sehr gut. In der Fehlerkonsole ist zu sehen:

Error.JPG

Da scheint der Fehler schon ausgemacht: Zugriff verweigert.

PS: XHTML ist tot. Verwende besser html5
Das verstehe ich (noch) nicht. Ich wüsste nicht, wie ich es praktisch einetzen könnte und ob die Verwendung mein Problem lösen würde.


tsseh
du öffnest das lokal, über das file:// protokoll ? dann würde das auf einem server ja so nicht funktionieren, bzw. müsste dann auch das textfile dort liegen. sonst https://developer.mozilla.org/en-US/...API/FileReader
Wie oben. Script und Textfile kommen später auf den Server

weil du das vermutlich über das file:// protokoll erledigst.
das native XMLHttpRequest des ie macht nicht so ohne weiteres einen lokalen request. dafür aber das activeX objekt. Code:
Ich habe deine Code verwendet. Leider bleibt der Fehler bestehen: Zugriff verweigert


mikdoe
Ein guter Hinweis für mich als Anfänger (Fehlerbild siehe oben).

Euere Hinweise haben mich schon weiter gebracht. Meine Suchergebnisse bezüglich "Zugriff verweigert" ergeben immer wieder den Hinweis, dass man folgende Alternativen hat:

new ActiveXObject("MSXML2.XMLHTTP.3.0")
new ActiveXObject("MSXML2.XMLHTTP");
new ActiveXObject("Microsoft.XMLHTTP")

Aber keine Alternative funktioniert! Habt ihr noch einen Tipp?

Danke schon mal im Voraus!
DerUrm
 
Zurück
Oben