2010-01-15 26 views
5

Sử dụng Javascript (hoặc Ajax) Tôi muốn kết nối với một trang (trang .php) cứ 10 giây một lần. Điều này sẽ được thực hiện ở phía người dùng (trình duyệt) trong một trang web. Chỉ cần, tôi đang cố gắng để xem những người dùng trực tuyến. Tôi có khoảng 1-2 khách truy cập hàng ngày, trong trang web cá nhân của tôi.cố gắng mở trang 10 giây một lần

+5

Hãy nhìn vào http://www.google.com/analytics/ – kgiannakakis

Trả lời

8

Sử dụng jQuery 's phương pháp $.post():

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

Tôi giả sử bạn có một lý do chính đáng để truy vấn kịch bản địa phương của bạn. Nếu bạn muốn biết thông tin chi tiết về ai đang truy cập trang web của bạn, khi nào và từ môi trường nào (máy, trình duyệt, v.v.), tôi khuyên bạn nên xem xét việc triển khai một cái gì đó như Google Analytics.

1

Javascript này sẽ đọc trang usersonline.php cứ sau 10 giây và đặt nội dung lên trang web hiện tại.

<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

Có ba vấn đề với điều này. 1) Tệp đính kèm sự kiện nội tuyến là biểu mẫu không đúng và có vấn đề, 2) chuyển một hàm thực tế tới 'setTimeout' thay vì một chuỗi là thích hợp hơn vì nó không liên quan đến một eval ngầm định và 3) điều này không hoạt động trong IE kể từ 'XMLHttpRequest' không tồn tại trong môi trường đó. –

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> 

thay đổi url cho phù hợp, tiết kiệm các mã trên như count.html trên desktop của bạn, và mở nó bằng Firefox

Các vấn đề liên quan