DiamondDog: Txt auslesen und anzeigen funktioniert nur 1 mal..

Hallo Leute,
ich hab ein kleines Problem und zar würde ich gerne eine Txt auslesen die auf meinem Server liegt. Das ganze soll Später ein Gadget werden. Leider wird mit meinem Code nur beim ersten aufruf der Seite ein mal die Datei ausgelesen und dannach nicht mehr egal was ich mache ich kann die Seite neu laden oder auch neu öffnen es steht immer der selbe Text dort, obwohl mitlerweile ein anderer Text in der Txt steht.

Hier mal mein Code:

  
<html>  
<head>  
<title>UserOnline Gadget</title>  
</head>  
<body leftmargin="2" topmargin="2" marginwidth="0" marginheight="0" scroll="yes" bgcolor="#666666" style="width: 150; height: 100;">  
<font id="UserOn" style="border:1px solid; border-color:#FFFFFF;">Keine Verbindung zur Homepage!</font>  
</body>  
<script language="javascript" type="text/javascript">  
function getuseron(){  
  var xmlHttp = null;  
  var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
  xmlHttp.open("GET", "http://www.diamonddoghamm.de/txt/useron/user_online.txt", false);  
  xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');  
  
   xmlHttp.send();  
   var xml = xmlHttp.responseText;  
   document.getElementById("UserOn").innerText = xml;  
}  
getuseron();  
</script>  
</html>  

Das ganze sollte so laufen, das später der Text in der Datei alle 5 oder 10 Secunden abgefragt wird. Nur leider komm ich zur Zeit hier nicht ganz weiter.

Danke schon mal fürs Helfen.

Mfg Dog

  1. Lieber DiamondDog,

    var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

    soll Dein Script ausschließlich im Internet Explorer lauffähig sein? So klappt es auch in allen anderen Browsern: Wikipedia über XmlHttpRequest

    xmlHttp.open("GET", "http://www.diamonddoghamm.de/txt/useron/user_online.txt", false);

    Damit wirst Du Caching-Probleme bekommen, da der Browser davon ausgeht, dass die bereits geladene Datei noch immer gilt. Hängre doch einfach einen Timestamp als URL-Parameter dran:

    xmlHttp.open(  
        "GET",  
        "http://www.diamonddoghamm.de/txt/useron/user_online.txt"  
            + "?time="  
            + new Date().getTime(),  
        false  
    );
    

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Lieber DiamondDog,

      var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

      soll Dein Script ausschließlich im Internet Explorer lauffähig sein? So klappt es auch in allen anderen Browsern: Wikipedia über XmlHttpRequest

      xmlHttp.open("GET", "http://www.diamonddoghamm.de/txt/useron/user_online.txt", false);

      Damit wirst Du Caching-Probleme bekommen, da der Browser davon ausgeht, dass die bereits geladene Datei noch immer gilt. Hängre doch einfach einen Timestamp als URL-Parameter dran:

      xmlHttp.open(

      "GET",
          "http://www.diamonddoghamm.de/txt/useron/user_online.txt"
              + "?time="
              + new Date().getTime(),
          false
      );

      
      >   
      > Liebe Grüße,  
      >   
      > Felix Riesterer.  
        
      Hi,  
      also Danke erst mal...  
      Hm. entweder versteh ich jetzt was falsch oder du hast mich falsch verstanden.  
      Also es reicht wenn es im IE funktioniert weil Gadget´s nur im IE laufen.  
        
      Dann das mit der Timastap anhängen versthe ich ja, nur wie und warum verste ich nicht so ganz.  
      Noch mla kurz und knapp das Script soll wenn ich es aufrufe alle 5 Sekunden, abrufen was in der Txt steht und dieses dann anzeigen.  
        
      Desweitern so nebenb bei ich bin nicht sooo sper in JS ein bisel kann ich, aber leider nicht alles.  
        
      Mfg Dog
      
      1. Lieber DiamondDog,

        bitte zitiere sinnvoll, indem Du z.B. nur die Zeilen zitiest, auf die Du Dich konkrez beziehst. Danke.

        Also es reicht wenn es im IE funktioniert weil Gadget´s nur im IE laufen.

        Wie Du willst. Den Apostroph nehme ich Dir übel (warum?).

        Dann das mit der Timastap anhängen versthe ich ja, nur wie und warum verste ich nicht so ganz.

        Für alle Browser ist "example.org" etwas völlig anderes, als "example.org?a=1". Daher kannst Du den Browser mit diesem Timestamp zwingen, entgegen seiner Einstellungen zum Cachen von bereits heruntergeladenen Dateien, diese erneut anzufordern.

        Noch mla kurz und knapp das Script soll wenn ich es aufrufe alle 5 Sekunden, abrufen was in der Txt steht und dieses dann anzeigen.

        Alle fünf Sekunden? Das verursacht einen enormen Traffic. Das würde ich lieber alle 15 Sekunden machen.

        Desweitern so nebenb bei ich bin nicht sooo sper in JS

        Das habe ich jetzt nicht verstanden. Was meintest Du da?

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Lieber DiamondDog,

          bitte zitiere sinnvoll, indem Du z.B. nur die Zeilen zitiest, auf die Du Dich konkrez beziehst. Danke.

          Also es reicht wenn es im IE funktioniert weil Gadget´s nur im IE laufen.

          Wie Du willst. Den Apostroph nehme ich Dir übel (warum?).

          Sorry so war das natürlich nciht gemeint.

          Dann das mit der Timastap anhängen versthe ich ja, nur wie und warum verste ich nicht so ganz.

          Für alle Browser ist "example.org" etwas völlig anderes, als "example.org?a=1". Daher kannst Du den Browser mit diesem Timestamp zwingen, entgegen seiner Einstellungen zum Cachen von bereits heruntergeladenen Dateien, diese erneut anzufordern.

          Das heist doch ich müste in deinem Script nach:
          ?time=
          noch eine Zahl in MiliSekunden setzen zum neu laden oder nicht?

          • "?time=5000"

          Noch mla kurz und knapp das Script soll wenn ich es aufrufe alle 5 Sekunden, abrufen was in der Txt steht und dieses dann anzeigen.

          Alle fünf Sekunden? Das verursacht einen enormen Traffic. Das würde ich lieber alle 15 Sekunden machen.

          Wäre auch ok oder alle 30sec das kann man ja nachher noch ändern  wenn alles läuft ;)

          Desweitern so nebenb bei ich bin nicht sooo sper in JS

          Das habe ich jetzt nicht verstanden. Was meintest Du da?

          Sollte kurz heien ich bin nicht so gut in JS also Bitte nachsicht ;)

          Ich hätte jetzt an sowas gedacht wie:
          window.setInterval("getuser()", 1000);

          Nur das hab ich Probiert das geht leider nicht.
          Hab es jetzt so, welches aber auch nicht von alleine neu läd.
          Wenn ich aber die Seite neu lade, dann wird hier bei der neue Text angezeigt:

            
          <script language="javascript" type="text/javascript">  
          function getuseron(){  
            var xmlHttp = null;  
            var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
            xmlHttp.open(  
              "GET",  
              "http://www.diamonddoghamm.de/txt/useron/user_online.txt"  
                  + "?time=5000"  
                  + new Date().getTime(),  
              false);  
            
            
            xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');  
            
             xmlHttp.send();  
             var xml = xmlHttp.responseText;  
             document.getElementById("UserOn").innerText = xml;  
          }  
          getuseron();  
          </script>  
          
          
          1. Mahlzeit DiamondDog,

            Das heist doch ich müste in deinem Script nach:
            ?time=
            noch eine Zahl in MiliSekunden setzen zum neu laden oder nicht?

            • "?time=5000"

            Nein, musst Du nicht. Dadurch, dass (in der nächsten Zeile) an die URL noch die aktuelle Zeit angehängt wird, ist die URL bei jedem Aufruf unterschiedlich ... und deshalb bekommst Du keine ollen Kamellen aus IrgendEinem Cache, sondern tatsächlich die angeforderte Datei.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. Hi,

        Dann das mit der Timastap anhängen versthe ich ja, nur wie und warum verste ich nicht so ganz.

        Damit der IE das ganze für eine neue, noch nicht abgerufene Ressource hält.

        Wenn du das nicht machst, dann baut der IE bei GET-Requests per AJAX Murks, was das Caching angeht.
        POST statt GET zu verwenden, wäre eine Alternative - dabei macht der IE diesen Fehler nicht.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]