setinterval werkt niet in IE

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • rxr1991
  • Registratie: Mei 2007
  • Laatst online: 01-09 09:59
Hallo,

Ik ben bezig om een "live" score van een handbal wedstrijd weer te geven op een website. Nu werkt dit perfect in FF maar helaas niet in IE.

Als ik in FF het programma'tje start wordt netjes de score geupdate wanneer ik de score verhoog. Helaas doet het programmatje het niet in IE. Ik heb met wireshark ook even gekeken en merk dat in IE geen request komen voor het interval en bij FF wel. Weet iemand hier een oplossing voor of een work arround?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<html>
<head>
<script type="text/javascript">

function updatestand(str)
{

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("stand").innerHTML=xmlhttp.responseText;
    document.getElementById("stand").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getuser.php?q="+str, (new Date()).getTime(), true);
xmlhttp.send();
}
</script>
</head>
<body>

<form>
<input type="button" value="start wedstrijd" onclick="setInterval('updatestand(this.value)', 80);" />
</form>
<br />
<div id="stand"><b>wedstrijd info</b></div>

</body>
</html>


in het bestand getuser.php die geeft een tabel terug waar de standen in staan.

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Probeer dit eens:
code:
1
onclick="setInterval(function() { updatestand(this.value); }, 80);"


Zie ook http://msdn.microsoft.com/en-us/library/ms536749(VS.85).aspx

NB Elke 80ms die stand updaten is wel erg snel. Elke seconde lijkt mij al meer dan voldoende?

Acties:
  • 0 Henk 'm!

  • rxr1991
  • Registratie: Mei 2007
  • Laatst online: 01-09 09:59
helaas werkt dit ook niet, in elke andere browser geen probleem. Firefox, Safari en google chrome maar internet explorer doet raar. Dat is de enige browser die geen requests naar mijn server doet.

Ik heb het op meerdere pc geprobeerd maar het functioneert niet. Wat ook raar is bij IE. Als ik de functie start haalt hij eenmalig de gegevens op. Dat geeft hij goed weer. Als ik daarna iets wijzig, krijg ik uiteraard niets terug. Als ik daarna op f5 druk en ik start de functie weer opnieuw, dat laat hij de oude gegevens zien. Bij ctrl f5 idem. Het lijkt er op dat hij de gegevens uit de cache haalt of zo.

Komt iemand dit bekent voor?

ps, die elke 80 ms wordt nog 10 seconden maar, om te testen wou ik niet elke keer 10 seconden wachten en deze waarde stond ergens in een voorbeeld dat ik zocht.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
IE cacht als een malle ja, voeg een anticache (bijv. timestamp) parameter toe aan je request zodat ie uniek is en dan is t opgelost :)

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Gebruik wel die anonymous function die ik gaf als eerste argument voor je setInterval().

Je caching probleem zit waarschijnlijk in de url (die is telkens gelijk). En je argumenten staan niet goed de XMLHttpRequest .open() method. Zoek dat eerst eens op en verander het dan in iets als:
code:
1
xmlhttp.open("GET","getuser.php?q="+str+"&timestamp="+(new Date()).getTime(), true);


Uiteindelijk vind ik dit allemaal toch basic debug werk. Kijk nou eerst eens goed hoe je bepaalde functies dient te gebruiken en kopieer niet klakkeloos een voorbeeld. Google is your friend.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:06

Creepy

Tactical Espionage Splatterer

En nog even een tikje door naar Webdesign, Markup & Clientside Scripting. Lees even Waar hoort mijn topic? door zodat je weet waar je je topics moet plaatsen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Dit hoort niet in PRG maar in client side scripting. Verder zul je eerst wat meer moeten gaan debuggen, want zoals hierboven al gezegd word is het waarschijnlijk geen probleem met setInterval, want dat werkt ook gewoon in IE, maar waarschijnlijker met caching, of een ander probleem in IE. Maar met wat script debugging moet je al een eind verder komen om je probleem te localiseren.

offtopic:
Grrr Creepy :(

[ Voor 3% gewijzigd door Woy op 16-10-2010 11:02 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • rxr1991
  • Registratie: Mei 2007
  • Laatst online: 01-09 09:59
Heb het inmiddels werkend, bedankt allemaal.

Het probleem is meestal dat je wel kunt achterhalen wat het niet doet, maar het is lastiger om uit te zoeken hoe je het moet veranderen om het wel te laten werken.

Maar goed dat is iets wat toch geleerd moet worden

bedankt

Acties:
  • 0 Henk 'm!

  • Merijn70
  • Registratie: November 2004
  • Laatst online: 06-07 19:45
Misschien een idee om dan ook even te omschrijven waar het probleem nou zat en hoe je het opgelost hebt? (evt. incl. de code)
Pagina: 1