Javascript timeout falsch
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abfragen
anfang
befehl
benutzen
code
funktion
helfen
jemand
leute
mache
moment
problem
reihenfolge
sekunde
status
zweiten befehls
zweiten funktion
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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 -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage