2011-05-08 24 views
2

飼料本身的作品,但其間的更新本身,當我提交的東西刷新頁面,沒有得到保存。活飼料:不知道如何保存提交的內容

jQuery代碼:

jQuery(document).ready(function() { 
    setInterval("showNewStories()", 5000); 
}); 

function showNewStories() { 
    $.getJSON("post.php", null, function(data) { 
     if (data != null) { 
      $("#stories").prepend($("<li><span class=\"story\">" + 
       data.story + "<br /><span class=\"date\">" + data.date + 
       "</span></li>").fadeIn("slow")); 
     } 
    });} 

post.php中:

<?php 
echo json_encode(array("story" => $_POST['dataS'], 
             "date" => date('l jS \of F Y h:i:s A'))); 
?> 

我想知道的是我怎麼能有像Facebook的飼料,你提交的東西,它被添加到飼料,然後即使刷新,它也會保持在那裏。

回答

0

我不是一個PHP專家,所以我不能告訴你是否已經這樣做了,但是服務器端的代碼應該接受一個參數來告訴它從哪個日期加載帖子。

然後,您應該在客戶端的JavaScript中有一個變量,指示檢索到的最新帖子的日期/時間。當頁面加載時,這應該是空的。

然後,撥打showNewStories的電話會將帶有最後日期時間的變量發送到服務器。在服務器上,如果變量傳遞給php頁面,那麼它將返回只有發佈日期時間的帖子是大於發佈日期/時間的

然後,當您從服務器獲得響應時,您可以將這些帖子添加到您的時間線。添加最後一個時,將日期時間存儲爲下一次調用showNewStories時將傳遞給服務器的日期時間。

在這個邏輯中有一個漏洞,如果你的服務器上的日期時間的分辨率不足以處理它收到的帖子數量的頻率,你可能會遇到一個問題,在時間x處,您檢索時間爲x的列表,然後在時間x處接受另一個帖子。下一次showNewStories打電話給服務器,您將錯過在x時間發出的第二篇文章。

爲了使這個防彈,您可以更改服務器上的邏輯,以包括髮布時間等於傳入日期時間的任何帖子。您還可以爲傳回給每個帖子的每個帖子返回一個唯一的ID客戶。

然後,在客戶端,當回調getJSON被調用時,您將包括所有項目,其中後的日期時間比提交給服務器日期時間相等的時間時,並且從服務器返回的帖子ID尚未在列表中(我建議將該帖子的ID作爲data attribute包括在列表中)。

0

你如何在服務器上存儲數據?數據將需要存儲在某個地方,可能是一個數據庫,以便輕鬆獲取最新的數據。

+0

我沒有任何方法來存儲數據,因爲,老實說,我不知道如何。 – Ator 2011-05-08 21:12:07

+0

除非您的應用程序只有一個用戶,否則您需要將數據存儲在某個位置以在請求之間保留數據。一個非常簡單的存儲數據的方法是使用'file_put_contents()'和'serialize()'將PHP數據存儲在磁盤上。 – preinheimer 2011-05-08 21:22:03