Jeff: Textdatei(Server) mit Javascript einlesen ?

Hi,

Wollte auf meiner Webseite einen Newsticker einfügen. Habe dazu auch schon einige coole Javascripts gefunden. Bei allen scripts muss man innerhalb des scripts/html file die anzuzeigenden Texte in Variablen schreiben:

var textStr = new Array();
textStr[0] = "Hi Jeff";
textStr[1] = "Wie geht es Dir denn so?";
textStr[2] = "Heute schon einen Backup gemacht?";

Ich möchte das aber flexibler machen und einfach nur eine Textdatei auf den Server legen:

news.txt:
Hi Jeff
Wie geht es Dir denn so?
Heute schon einen Backup gemacht?

und diese dann mittels Javascript in die obigen Variablen einlesen. Da ich keine anderen Möglichkeiten habe(für PHP muss man bei Strato extra zahlen :-( ) hoffe ich das mir jemand sagen kann wie dies mit Javascript funktioniert. Wie gesagt, die HTML Datei und die TXT Datei liegen beide auf dem gleichen Server.

Vielen Dank
Jeff

  1. Ich möchte das aber flexibler machen und einfach nur eine Textdatei auf den Server legen:

    Das geht nur per CGI.

    Struppi.

    P.S. das ist eine Frage die schon eine Millionen mal gestellt wurde und auf die du sicher mit den suchworten 'javascript' 'Datei lesen' schnell eine Antwort gefunden hättest.

  2. Hallo Jeff,

    wenn du wirklich nur eine Textdatei einlesen willst, geht das am praktischsten über einen unsichtbaren iframe:

    <iframe name="newstexte" src="news.txt" style="display:none"></iframe>

    Dann kannst du mit "newstexte.document" auf den Inhalt der Datei zugreifen. Evtl. müsstest du davor noch warten, bis die Datei vollständig geladen wurde.

    Einfacher wäre es aber mit einer externen JavaScript-Datei, in der du das Selbstgespräch direkt in die Variable schreibst:

    news.js:
    textStr = new Array(
      "Hi Jeff",
      "Wie geht es Dir denn so?",
      "Heute schon einen Backup gemacht?"
    );

    Und in der Webseite dann:

    <script src="news.js" type="text/javascript"></script>

    Auch hier solltest du abwarten, bis die Datei news.js übertragen wurde.

    Viel Erfolg,
    Robert (dem Newsticker im Übrigen ziemlich auf den Wecker gehen.)

    1. Hallo nochmal,

      du schriebst mir gerade per E-Mail:

      Das hört sich wirklich sehr gut an, aber da ich ziemlich neu in diesem Themenbereich bin ...
      vielleicht könntest Du mir dann noch sagen wie ich denn jetzt letztendlich an den Text bzw an die
      einzelnen Zeilen komme?

      Das scheint wirklich schwieriger zu sein, als ich gedacht habe. Bis jetzt habe ich nur folgendes herausgefunden:

      • a = newstexte.document.documentElement.outerText;
          funktioniert in Opera 7 und IE 6, aber nicht in Mozilla.

      • a = newstexte.document.documentElement.childNodes[1].firstChild.firstChild.nodeValue;
          funktioniert in Mozilla und IE 6, aber nicht in Opera.

      • a = newstexte.document.documentElement.childNodes[0].firstChild.firstChild.nodeValue;
          funktioniert in Opera 7, aber nicht in IE und Mozilla.

      Du bräuchtest also eine Browserweiche, z.B.:

      a = "Newstexte konnten nicht gelesen werden.";
      if (newstexte.document.documentElement.childNodes[0].nodeName.toUpperCase() == "BODY") {
        a = newstexte.document.documentElement.childNodes[0].firstChild.firstChild.nodeValue;
      } else if (newstexte.document.documentElement.childNodes[1]) {
        if (newstexte.document.documentElement.childNodes[1].nodeName.toUpperCase() == "BODY")
          a = newstexte.document.documentElement.childNodes[1].firstChild.firstChild.nodeValue;
      }
      alert(a);

      Das funktioniert zwar bei mir in den drei getesteten Browsern, erscheint mir aber ziemlich wackelig und nicht besonders elegant. Du solltest also IMHO lieber auf eine externe JavaScript-Datei zurückgreifen, wenn du die Möglichkeit dazu hast. Oder du überlegst dir das mit dem nervtötenden Ticker nochmal grundsätzlich anders ;-)

      Die einzelnen Zeilen kannst du dann mit split herauslesen:

      b = a.split("\n");
      if (b.length == 1)  b = a.split("\r");

      for (i=0; i<b.length; i++)  alert(b[i]);

      Viel Erfolg,
      Robert

  3. Hallo,

    Normalerweise macht man sowas mit cgi oder php, mit Javascript
    gehts leider nicht. Aber du könntest sowas in der Art basteln:
    Du machtst ein winziges Iframe, lädst die Datei da rein und liest
    den Inhalt des Iframe in das Javascript Array. Geht aber nur wenn
    die Dateien wirklich auf dem selben Server liegen.

    mfg,
    Peter