Ajax request werkt maar 1 keer

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Beste mensen,

Ik maak gebruik van onderstaande code en zit al dagen te prutsen om het voor elkaar te krijgen maar het lukt niet.

Ik wil een gedeelte van een pagina doormiddel van Ajax/javascript/innerHtml laten refreshen. Op de webserver staat een htm file die ik doormiddel van een request wil ophalen en vervolgens in een div wil "duwen" doormiddel van een innerHTML, zie onderstaande code. De htm file die ik ophaal veranderd om de 5 minuten. Dit werkt perfect als ik de pagina voor de eerste maal open. Maar wanneer ik na 5 minuten de browser ververs wil de div niet refreshen en blijft dus hetzelfde. Wanneer ik op een ander tab blad van de IE een willekeurige pagina op ons domein open en terugschakel naar het tabblad waar ik op bezig was en een refresh doe wordt de div wel gerefreshed.

Heeft iemand enig idee? Iets met de cache, of het object wat niet overschreven kan worden of zo....

ps. Ik gebruik de F5 refresh van IE omdat ik nog een linkje moet inbouwen naar het stukje java om de div te refreshen, en wil straks inbouwen dat hij automatisch om de 5 minuten refresht.

HTML: filename
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<script language="javascript" type="text/javascript">

function maakXMLObj()
{
   var objXml = false; 
   try
   {
    // Firefox, Opera 8.0+, Safari
    objXml = new XMLHttpRequest();
   }
   catch (e)
   {
    // Internet Explorer
     try
     {
       objXml = new ActiveXObject("Msxml2.XMLHTTP");
     }
     catch (e)
     {
       try
       {
         objXml = new ActiveXObject("Microsoft.XMLHTTP");
       }
         catch (e)
       {
         alert("Uh-ohw, je browser ondersteund geen AJAX!");
         return false;
       }
     }
   }
   return objXml;
}

function openBestand(bestand)
{
   objXml=null;
   var objXml = maakXMLObj(); 

   objXml.open('GET', bestand, 'false');
   objXml.send(null);
   return objXml.responseText;
}

function veranderObjectText(id, bestand)
{
   var het_obj = document.getElementById(id);
   var text = openBestand(bestand);
   het_obj.innerHTML = text;
}

</script>

</head>

<body>

<div id='playlistDiv'>
    Momentje playlist wordt geladen...
</div>

<script language="javascript" type="text/javascript">
    veranderObjectText("playlistDiv","http://www.domein.nl/~playlist/playlist.htm");
</script>

Acties:
  • 0 Henk 'm!

  • The_Ghost16
  • Registratie: Januari 2004
  • Laatst online: 19-05 10:05
Misschien ctrl-f5 eens proberen? Dat refresht ook echt alles. Wat gewoon f5 niet doet.

Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
The_Ghost16 schreef op dinsdag 02 juni 2009 @ 11:48:
Misschien ctrl-f5 eens proberen? Dat refresht ook echt alles. Wat gewoon f5 niet doet.
Werkt ook niet. Is ook niet de oplossing want uiteindelijk wil ik automatisch "veranderObjectText("playlistDiv","http://www.domein.nl/~playlist/playlist.htm");" uitvoeren.

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Zet een random nummer achter de URL om caching te voorkomen ;)

Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
André schreef op dinsdag 02 juni 2009 @ 12:00:
Zet een random nummer achter de URL om caching te voorkomen ;)
Euh, hoe doe ik dat dan? Als ik er iets achter zet kan hij de url toch niet vinden?

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:52

MueR

Admin Tweakers Discord

is niet lief

HTML:
1
2
3
<script language="javascript" type="text/javascript">
    veranderObjectText("playlistDiv","http://www.domein.nl/~playlist/playlist.htm?1234567890");
</script>

Werkt prima hoor.

Maar je wil een pagina gaan refreshen met F5, om elke 5 minuten een gewijzigd bestand op te halen? Waarom laat je dat ajax geval niet gewoon elke 5 minuten een nieuwe versie ophalen?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
MueR schreef op dinsdag 02 juni 2009 @ 12:22:
HTML:
1
2
3
<script language="javascript" type="text/javascript">
    veranderObjectText("playlistDiv","http://www.domein.nl/~playlist/playlist.htm?1234567890");
</script>

Werkt prima hoor.

Maar je wil een pagina gaan refreshen met F5, om elke 5 minuten een gewijzigd bestand op te halen? Waarom laat je dat ajax geval niet gewoon elke 5 minuten een nieuwe versie ophalen?
Ga ik proberen. Ik dacht dat je dit alleen kon uithalen met een php file en niet met een htm file. Is ook de bedoeling hoor om Ajax autmatisch te laten refreshen, moet ik er nog even inbouwen. Maar was vast aan het testen door op F5 te drukken.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:22

crisp

Devver

Pixelated

overigens:
JavaScript:
1
objXml.open('GET', bestand, 'false'); 

'false' != false

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Werkt inderdaad, gewoon een random getalletje er achter :) . Thanks iedereen!

[ Voor 3% gewijzigd door nico_van_wijk op 02-06-2009 13:18 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
crisp schreef op dinsdag 02 juni 2009 @ 12:33:
overigens:
JavaScript:
1
objXml.open('GET', bestand, 'false'); 

'false' != false
PHP gewend misschien :+

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ik weet het niet zeker, maar dit lijkt me niet goed:
[code=js]
objXml.send(null);
return objXml.responseText;
[/]
Je returnt al, en op een iets tragere webserver dan je localhost zou hij nog wel eens bezig kunnen zijn, en dus een lege string returnen. Volgens mij hoort het zo:
[code=js]
objXml.onreadystatechange=stateChanged;
objXml.send(null);
return objXml;
}
function stateChanged()
{
if (this.readyState == 4) ...
}
[/]
oid... niet getest hoor

nm

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:22

crisp

Devver

Pixelated

Guillome schreef op woensdag 03 juni 2009 @ 10:16:
Ik weet het niet zeker, maar dit lijkt me niet goed:

[...]
Dat ligt er aan of je een asynchroon of een synchroon request stuurt...

[ Voor 46% gewijzigd door crisp op 03-06-2009 10:20 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

edit:
Ok ik heb het even opgezocht en idd, hij gebruikt synchronous :)
nm then!

[ Voor 95% gewijzigd door Guillome op 03-06-2009 10:56 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router

Pagina: 1