2010-01-15 3 views
5

Uso di Javascript (o Ajax) Desidero collegarmi a una pagina (una pagina .php) ogni 10 secondi. Questo sarà fatto nel lato utente (browser) all'interno di una pagina web. Sto solo cercando di vedere gli utenti online. Ho circa 1-2 visitatori al giorno, nel mio sito web personale.tenta di aprire una pagina ogni 10 secondi

+5

Date un'occhiata al http://www.google.com/analytics/ – kgiannakakis

risposta

8

Utilizzando jQuery 's metodo $.post():

setInterval(function(){ 
    $.post("getCount.php", function(result) { 
    // do something with result 
    }, "html"); 
}, 10000); 

sto assumendo che abbiate una buona ragione per interrogare il proprio script locale. Se desideri informazioni dettagliate su chi sta visitando il tuo sito, quando, e da quali tipi di ambienti (macchine, browser, ecc.), Ti suggerisco di esaminare l'implementazione di qualcosa come Google Analytics.

1

Questo Javascript leggerà la pagina usersonline.php ogni 10 secondi e posizionerà il contenuto sulla pagina Web corrente.

<html> 
<head> 
<script> 

var xmlrequest; 

function gotnewdata() 
{ 
    if(xmlrequest.readyState == 4) 
    { 
     document.getElementById("output").innerHTML = xmlrequest.responseText; 
     setTimeout("loadpage();", 10000); 
    } 
} 

function loadpage() 
{ 
    xmlrequest = new XMLHttpRequest(); 
    xmlrequest.open("GET", "usersonline.php", true); 
    xmlrequest.onreadystatechange = gotnewdata; 
    xmlrequest.send(null); 
} 

</script> 
</head> 
<body onload="loadpage();"> 
<h1>My Page</h1> 
<p>USERS ONLINE:</p><p id="output"></p> 
</body></html> 
+1

Ci sono tre problemi con questo. 1) L'allegato inline è una cattiva forma e ha problemi, 2) passare una funzione effettiva a 'setTimeout' piuttosto che una stringa è preferibile in quanto non implica una valutazione implicita, e 3) questo non funziona in IE poiché 'XMLHttpRequest' non esiste in quell'ambiente. –

1
<html> 
<body> 
<form target='userCountFrame' action='http://www.google.com'></form> 
<iframe name='userCountFrame'></iframe> 
<script> 
setInterval(function(){ 
    document.getElementsByTagName('form')[0].submit(); 
}, 10 * 60 * 1000); 
</script> 
</body> 
</html> 

modificare l'URL di conseguenza, salvare il codice di cui sopra come count.html sul desktop, e aprirlo con Firefox