【问题标题】:update time values real time for comments on a page实时更新页面评论的时间值
【发布时间】:2013-02-16 08:02:22
【问题描述】:

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

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

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

我认为它或多或少类似于推送通知功能。

*编辑:* 因为这已经被否决了,而且我现在已经发布了这个问题,如果人们能给我一些建议,我将不胜感激..

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

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);

 })(); 

感谢所有试图提供帮助的人,感谢版主重新提出这个问题。

【问题讨论】:

  • 完全否决?我只需要为所有 cmets 分配正确值的逻辑。
  • 我相信你被否决了,因为你没有尝试任何东西,只是期待“免费代码”。
  • 我感觉到你没有阅读我上面的评论。请把它放在心上..先尝试一下,你会有更好的反应。
  • @Daedalus 是你建议我删除这个并做一些研究,如果我有问题回来再发布一个
  • 删除?也许,但这不是我的建议。我的建议是先尝试一些东西,然后相应地编辑你的问题。不仅如此,你的问题就目前而言相当模糊。当我们不知道您的目标是什么时,很难为您提供适合您需求的代码。

标签: javascript real-time


【解决方案1】:

试试这个

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

【讨论】:

  • 如何为 cmets 分配正确的值,我有点困惑。
【解决方案2】:

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

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

 }
 }

【讨论】:

  • 这就是我的问题所在。由于会有超过 1 条评论,我将如何在每个 ajax 请求中一次性更新所有评论?
  • 有很多方法可以做到这一点让我想 1.只制作 1 个包含所有评论的 DIV,然后从 ajax 你得到每条评论都有自己的时间,然后只需 $('divid ').html(响应)。 2. 为每条评论创建一个不同的 id,然后用 FOR 分配值,我将使用数字 1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多