我的页面中有一组<li>
,如http://jsfiddle.net/gaby/zzj7E/5/
每个li
有3个跨度......一个用于评论,一个用于查看,一个用于投票。
<a class="example7" href="userpanel/comment.php?id=578" style="text-decoration:none; color:#666666; "><img src="content/comment/comments.png" width=18 height=18><i>No comments</i></a>
<span style="text-decoration:none; color:none; margin:5px;"><img src="content/voting/eye.png" > 9</span>
<span class="vote" id="578" name="up" style="text-decoration:none; color:none; margin:5px; "> <img src="/content/voting/yes-enb.png" width=12 height=12 alt=""> <span style="text-decoration:none; color:none">0 </span></span>
我想每2分钟自动刷新每个元素中的值(count)。我知道如何预先添加/附加div,但是如何在一段时间后刷新每个li
中的选定元素?
此功能非常类似于Facebook每次用户发布内容时自动恢复“评论”计数或“赞”计数的方式。
我应该怎么做呢?
答案 0 :(得分:5)
PHP是一种服务器端脚本语言,您无法直接编辑已在客户端计算机上显示的值。但是,您可以使用AJAX调用PHP脚本然后将输出解析为您的跨度(最好的方法是在PHP端对JSON_encode您的数组进行编码然后在JS端解码..
function AJAX(){
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)
{
var data = xmlhttp.responseText;
var decoded = eval( "(" + data + ")" );
document.getElementById('span1').innerHTML = avayaevald['1'];
document.getElementById('span2').innerHTML = avayaevald['2'];
document.getElementById('span3').innerHTML = avayaevald['3'];
}
}
xmlhttp.open("GET","index.php?loadAction=process",false);
xmlhttp.send();
}
然后setInterval(AJAX(), 120000);
,你将被设置。
答案 1 :(得分:2)
使用JavaScript setInterval
作为计时器。
答案 2 :(得分:0)
像Chamika之前所述,你需要使用间隔或超时
setInteral('function', time_in_ms)
或
setTimeout('function', time_in_ms)
但是,你真正想要的是一个AJAX组件,你需要使用HTTP请求,并为请求创建一个页面处理程序(无论你使用哪个平台)。
一个好方法是使用jquery ajax http://api.jquery.com/jQuery.ajax/
答案 3 :(得分:0)
这将每2分钟运行一次功能:
$(document).ready(function(){
setInterval(function(){
alert("yo");
},120000);
});
至于ajax
部分,您使用的服务器是什么? PHP? JSF?