2012-02-18 74 views
1

假設我在一個頁面中有15個或更多的帖子。 while循環中的代碼如下所示如何讓帖子日期同步

<div class="post" id="<?php echo $postID?>"> 

    <h1><?php echo $title;?></h1> 

    <div class="postmeta"> 
posted by <?php echo $author;?> , <?php echo timeAgo($postDate);?></div> 
    </div> 

這只是一個例子!所以timeAgo()函數在11分鐘前將unix時間戳1329569847轉換爲人類時間。以及如何使它與阿賈克斯實時同步我的意思是5分鐘後改爲16分鐘前,4分鐘後改爲20分鐘前,並影響所有帖子。


所以我設法使它工作得益於chenioTheShellfishMeme(啤酒)。

這是做魔術

<span class="timestamp" id="5" postdate="1329576793"></span><br/> 

<span class="timestamp" id="8" postdate="1329576795"></span><br/> 


<script> 

updateTimestamps(); 
setInterval(updateTimestamps, 60000); 

function updateTimestamps(){ 
    $(".timestamp").each(function(i){ 

     var timestamp = $(this).attr("postdate"); 
var postID = $(this).attr("id"); 

$.ajax({ 
type: "POST", 
url: "myURL", 
data: "postID="+ postID +'&timestamp=' + timestamp, 
cache: false, 
success: function(html){ 

$(".timestamp#"+postID).html(html); 

} 
}); 




    }); 
} 
</script> 
+0

你應該在服務器上的排序中,它應該與JavaScript無關。你的網頁上還有多個h1? – epascarello 2012-02-18 13:46:12

+0

是的,這只是一個例子。而且我的數據庫中有post unix timestamp – Ben 2012-02-18 13:48:58

回答

2

我會使用數據屬性,如這裏http://jsfiddle.net/rXFnn/到UNIX時間戳添加到跨度其目的是要「前時間」包含在div裏面的代碼串。 然後,將timeAgo邏輯移植到JavaScript,並使用setInterval每分鐘更新一次。

無需爲簡單的事情做AJAX,但請注意以下示例使用jQuery

爲了完整起見,這裏是代碼再次:​​

<div class="postmeta"> 
    posted by Foo , <span class="timestamp" data-timestamp="1329573254200"></span> ago 
</div>​ 

<script> 
updateTimestamps(); 
setInterval(updateTimestamps, 60000); 

function updateTimestamps(){ 
    $(".timestamp").each(function(i){ 
     var timestamp = $(this).data('timestamp'); 

     // Put your time ago logic here 
     var timeAgo = timestamp; 
     $(this).text(timeAgo); 
    }); 
} 
</script> 

+0

這個答案正在使用jquery框架。你至少應該說明你正在使用它。 – SoonDead 2012-02-18 14:13:17

+2

考慮將精確的時間寫入跨度,所以沒有JS的人也會知道時間。 – TimWolla 2012-02-18 14:26:06

1

使用jQuery是一個很好的形式去做。 這是一個例子:

 <script src=jquery.js"></script> 
     <script> 

    <script> 

    var auto_refresh = setInterval(
    function() 
    { 
// here put a url to a script to calculate time posted ago 
    $('#someid').load('someurl'); 
    }, 60000); 
    </script> 
    <div class="post" id="<?php echo $postID?>"> 

    <h1><?php echo $title;?></h1> 

    <div class="postmeta" id='someid'> 
posted by <?php echo $author;?> , <?php echo timeAgo($postDate);?></div> 
    </div> 

另一種形式是:

..... continue 
$.ajax({ 
// here put a url to a script to calculate time posted ago 
    url: 'url', 
    success: function(data) { 
    $('#someid').html(data); 

    } 
}); 
...... 

http://api.jquery.com/jQuery.ajaxhttp://designgala.com/how-to-refresh-div-using-jquery/

我希望這可以幫助你