更新时间值实时评论页面

时间:2013-02-16 08:02:23

标签: javascript real-time

我希望能够像过去的时间一样更新页面上所有评论的时间值。 我知道我应该使用setInterval()运行脚本,或者可能使用长轮询,不知道这是否是首选技术。

此外,即使我获得了JS响应中所有注释的更新值(可能在数组中),我应该如何将值分配给相关注释。

如果我应该使用其他逻辑,请提出建议并提供帮助。

我认为它或多或少会像推送通知功能一样。

* 编辑:* 因为这已经被投票了,但我现在已经发布了这个问题,如果有人会建议我的话,我将不胜感激。

更新:我通过重新创建PHP函数来实现上述功能,该函数计算了JavaScript中的运行时间,如下所示:

function calcTime(date){

if(date == ""){
  return "No date provided";
}

periods = new Array("second", "minute", "hour", "day", "week", "month", "year", "decade");
lengths = new Array("60","60","24","7","4.35","12","10");

now = Math.round(new Date().getTime() / 1000);
unix_date = date;

// check validity of date
if(unix_date == ""){
    return "bad date";
 }

// future date or past date
if(now > unix_date){
 difference = now - unix_date;
 tense = "ago";
} else {
  difference = unix_date - now;
  tense = "from now";
}

for(var j=0;difference >= lengths[j] && j < (lengths.length) - 1; j++){
difference /= lengths[j];
}
difference = Math.round(difference);

 if(difference != 1){
    periods[j] += "s";  
}

return difference+" "+periods[j]+" "+tense ;

}
HTML中的

返回一个带有来自数据库的时间戳的隐藏值,然后循环遍历JS中的结果以使用setInterval()函数获取新值,从而无需调用php和不必要的启动ajax请求。像这样的东西:

(function(){
  setInterval(function (){
  timeValues = document.getElementsByClassName('unixTime');
  abbrValues = document.getElementsByClassName('full_timestamp');
  len = timeValues.length;
  alen = abbrValues.length;

  for(i=0; i<len;i++){
 ut = timeValues[i].value;
   for(j=0;j<alen;j++){
    abbrValues[i].innerHTML = calcTime(ut);
      }
      }

   },10000);

 })(); 

感谢所有试图提供帮助的人,感谢版主重新开启此问题。

2 个答案:

答案 0 :(得分:0)

试试这个

     $(document).ready(function(){
          setInterval("getTime();", 30000);
     })

答案 1 :(得分:0)

好吧,如果你正在使用Jquery,那么评论部分必须有一个标签,你要存储“时间”,所以如果那个标签有一个ID ='timeid'那么它就像这样简单,其中响应是几分钟或任何你想要的新时间

function getTime(){
 $.ajax(){
 // get response here
 //
 $('#timeid').val(response.' minutes');

 }
 }
相关问题