kostenloser Webspace werbefrei: lima-city


Javascript timeout falsch

lima-city: kostenloser WebspaceForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    dataserver

    Benutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Bettler

    218 Gulden

    0 positive Bewertungen
    0

    dataserver hat kostenlosen Webspace.

    Hallo Leute!
    Mein Problem ist, dass ich zwei Funktionen in verschiedenen Tmeouts verwende und diese unterschiedlich ausgeführt werden:
    function showChat() {
        if (window.XMLHttpRequest) {
          xmlhttp=new XMLHttpRequest();
        } else {
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function() {
          if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("livechat").innerHTML=xmlhttp.responseText;
          }
        }
        xmlhttp.open("GET","chat.php?<?php echo 'chatuser1='.@$user.'&chatuser2='.@$_GET['user']; ?>",true);
        xmlhttp.send();
    }
    function showUserOnline() {
        if (window.XMLHttpRequest) {
          xmlhttp=new XMLHttpRequest();
        } else {
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function() {
          if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("useronlinestate").innerHTML=xmlhttp.responseText;
          }
        }
        xmlhttp.open("GET","functions.php.php?useronlinestate=<?php echo @$_GET['user']; ?>",true);
        xmlhttp.send();
    }
    
    showChat();
    showUserOnline();
    
    setInterval(function(){
        showUserOnline();
    }, 30000);
    setInterval(function(){
        showChat();
    }, 5000);


    Reit theoretisch sollten die Funktionen showUserOnline() und showChat() gleichzeitig ausgeführt werden. Hier passiert allerdings folgendes: Die Funktion showUserOnline() wird direkt ausgeführt, showChat() erst mit 5 Sekunden Verspätung.
    Falls jemand weiß, wie ich beide ganz am Anfang gleichzeitig ausführen lasse, wäre ich dankbar!

    Max
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. forceofkingdoms

    Benutzer, kostenlos Webspace Ketzer

    99 Gulden

    0 positive Bewertungen
    0

    forceofkingdoms hat kostenlosen Webspace.

    Ich hab mir mal deinen Code kopiert und etwas herum gespielt.
    Je nach dem, wie ich die Reihenfolge der beiden Befehle gemacht hat geschah folgendes:
    showChat();
    showUserOnline();
    -> nur showUserOnline wird zuerst gezeigt (showChat lädt später 5s)

    showUserOnline();
    showChat();
    -> nur showChat wird zuerst gezeigt (showUserOnline lädt später 30s)

    Nun, da muss doch irgend was falsch sein.
    Daher hab ich einfach mal so ein ; vor die beiden Befehle getan:
    Also so:
    ;
    showUserOnline();
    showChat();


    Nun wurden beide Befehle ausgeführt, eine Erklärung hab ich dazu aber nicht.

    Also hab ich etwas weiter ausprobiert
    Schlussendlich hab ich mal die namen der Variabeln geändert also xmlhttp im showUserOnline zu xmlhttp2 (alle in dieser Funktion)
    Und dann ging es auch reibungslose... erklärung.. hab ich keine

    Hoffe ich konnte dir helfen

    mfG
    foK

    EDIT*
    Wahrscheinlich liegt dies daran, dass sich die Variabeln gegenseitig überschneiden und somit nur den Wert des zweiten Befehls ausführen.. aber sicher bin ich mir nicht.

    Beitrag zuletzt geändert: 3.10.2015 18:32:11 von forceofkingdoms
  4. Autor dieses Themas

    dataserver

    Benutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Bettler

    218 Gulden

    0 positive Bewertungen
    0

    dataserver hat kostenlosen Webspace.

    Vielen Dank!

    Und ob du es glaubst oder nicht, in dem Moment, wo du geschrieben hast, dass ich xmlhttp zu xmlhttp2 in der zweiten Funktion soll,ist mir dasselbe eingefallen.
    Trotzdem noch vielen Dank!
    Max
  5. forceofkingdoms

    Benutzer, kostenlos Webspace Ketzer

    99 Gulden

    0 positive Bewertungen
    0

    forceofkingdoms hat kostenlosen Webspace.

    Was noch besser wäre ist, wenn du einfach die variable am Anfang deiner Funktion definierst.
    Also:
    function showChat() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
    xmlhttp=new XMLHttpRequest();
    } else {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }


    und genau das selbe bei der anderen Funktion.
    Damit musst du bei mehreren Abfragen nicht immer xmlhttp1 xmlhttp2 xmlhttp3 etc benutzen



    Beitrag zuletzt geändert: 3.10.2015 18:35:03 von forceofkingdoms
  6. Autor dieses Themas

    dataserver

    Benutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Bettler

    218 Gulden

    0 positive Bewertungen
    0

    dataserver hat kostenlosen Webspace.

    Vielen Dank!
    Ich mache das jetzt so!
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!