[AJAX] Content wordt niet bijgewerkt.

Pagina: 1
Acties:
  • 136 views sinds 30-01-2008
  • Reageer

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Ik heb op mijn site een gedeelte wat elke 5 seconde gerefreshed moet worden. Een mooie methode hiervoor is AJAX. Nu heb ik het volgende javascript:

JavaScript:
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
function getRequest(selectedDiv, URL) {
    var xmlHttp;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    } catch (e) {
        // Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState == 4) {
            result = xmlHttp.responseText;
            document.getElementById(selectedDiv).innerHTML = result;
        }
    }
    xmlHttp.open("GET",URL,true);
    xmlHttp.send(null);
}

function reGetRequest(selectedDiv, URL) {
    getRequest(selectedDiv, URL);
    setTimeout("reGetRequest(selectedDiv, URL);",5000);
}


En de code roep ik op volgende wijze aan:

HTML:
1
<img src="images/loading.gif" onload="reGetRequest('divWelkeRefreshedMoetWorden', 'includes/bestand.php');" alt="Loading server info..." />


Nu wordt de content netjes geladen, maar na 5 seconde gebeurt er niets. Er wordt niks refreshed.
Ik heb al proberen te debuggen en op internet gezocht, maar ik zie neit wat ik fout doe. Wie kan mij een beetje op weg helpen? :)

  • avon
  • Registratie: November 2002
  • Laatst online: 27-06 12:38
Volgens mij moet je dit even omdraaien

xmlHttp.open("GET",URL,true);
xmlHttp.send(null);

en daarna pas die return waarde door parsen!

xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 4) {
result = xmlHttp.responseText;
document.getElementById(selectedDiv).innerHTML = result;
}
}

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 28-11 22:35

MBV

waarom het wiel opnieuw uitvinden? Gebruik fijn de prototype library, daar zit al een functie in om elke X seconden de content te verversen:
http://www.prototypejs.org/

En als je wilt debuggen: firebug kan je daarbij helpen: https://addons.mozilla.org/en-US/firefox/addon/1843

edit:
ik bedoel dus PeriodicalUpdater, te vinden in de prototype ajax handleiding

[ Voor 21% gewijzigd door MBV op 12-05-2007 17:40 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

JavaScript:
1
setTimeout("reGetRequest('"+selectedDiv+"', '"+URL+"');",5000);

Intentionally left blank


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
crisp schreef op zaterdag 12 mei 2007 @ 17:39:
JavaScript:
1
setTimeout("reGetRequest('"+selectedDiv+"', '"+URL+"');",5000);
Ja, dat was hem :D . Dankje!

  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 01-12 13:21
Zou dat niet komen door het bekende cache probleem van o.a. Internet Explorer? Voeg bij elke URL toe "&rand=<? echo rand(1,1000); ?>" en het zal waarschijnlijk wel werken ;)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

MBV schreef op zaterdag 12 mei 2007 @ 17:38:
waarom het wiel opnieuw uitvinden? Gebruik fijn de prototype library, daar zit al een functie in om elke X seconden de content te verversen:
Er is niets mis met het wiel opnieuw uitvinden, van enkel copy/pasten leer je niets en komen er ook nooit betere wielen ;)

Intentionally left blank


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
lennartkocken schreef op zaterdag 12 mei 2007 @ 17:42:
Zou dat niet komen door het bekende cache probleem van o.a. Internet Explorer? Voeg bij elke URL toe "&rand=<? echo rand(1,1000); ?>" en het zal waarschijnlijk wel werken ;)
Dat had ik al opgelost door in het PHP het volgende mee te geven :)

PHP:
1
2
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 28-11 22:35

MBV

crisp schreef op zaterdag 12 mei 2007 @ 17:44:
[...]

Er is niets mis met het wiel opnieuw uitvinden, van enkel copy/pasten leer je niets en komen er ook nooit betere wielen ;)
Maar als je al een set wielen hebt liggen scheelt het toch een boel tijd, en als je altijd dezelfde wielen gebruikt wordt onderhoud ook wat makkelijker ;). Om dezelfde reden gebruiken we waar ik werk nu ook smarty: de in-house template engine kan (bijna) genoeg, maar als je smarty hebt kan je eens iemand binnenhalen die smarty al kent :)

't wiel van de TS is al een stuk beter dan wat ik 3 jaar geleden bij elkaar had geschraapt: http://mvdvlist.nl/xmltest/3col_index.html :X

[ Voor 10% gewijzigd door MBV op 12-05-2007 18:14 ]

Pagina: 1