2010-12-09 57 views
1

好吧,所以我會說實話,我有很多的經驗與PHP/MySQL的,我剛開始學習jQuery,我做了很少,但一些與AJAX 。因此,交替使用術語ajax/jquery對我來說有點混亂。無論如何,因爲標題建議我有一個包含5個項目的網站,我希望它們移動(意思是說,如果輸入了最近的項目,刪除最後一個項目,並將新項目放在最上面),它們是最多的5個最近在數據庫表中的項目,現在我已經編寫了jquery作爲測試,以便淡化最後一個,整個事情向下移動,騰出空間在頂部,並淡入一個新的。然而,這是一個測試,與數據庫0交互,淡入的只是一個隱藏的div。所以jQuery部分是照顧好的。移動首頁(cursebird或foursquare)

所以我不確定如何去做這件事,我在想也許有一個Ajax檢查一個網站的網頁,有5個原始格式的項目,如果他們改變然後刷新?

不尋找一個「plz代碼4我」的答案,只是它的工作原理,或一些鏈接到正確的開始。

編輯 - 此外,這5個項目是排名,所以如果我點擊項目3我需要它無縫地移動到第2項以上,所以這會導致我假設的整個其他問題。

+0

任何形式的碰撞系統? – 2010-12-09 18:31:15

回答

0

你的AJAX解決方案聽起來很合理,但是......

如何經常會在數據庫中更新?如果每隔幾分鐘獲得一次更新,那麼如果每秒獲得100次更新,那麼這將工作正常,然後用戶可能會得到奇怪的結果。

您計劃輪詢服務器和多少用戶的頻率?

只是一些想法。

+0

那麼理想的人會和Facebook一樣多嗎? :P。不,但我希望它能夠適應大型社區,我也稍微改變了這個問題。 - 會在原始帖子中記下它。 – 2010-12-09 13:21:26

0

基本的想法是,jQuery(javascript工具包)向腳本(在你的情況下是PHP)發出一個Ajax請求(這可以用原始javascript完成,但jQuery使這個過程變得更容易),它將查詢數據庫,然後返回數據。 (呼叫和應答)

你的基本的腳本很可能會沿着這些路線的東西:

Ajax的handler.php

<?php 
    if(isset($_POST['get-store-updates'])){ 
     $output = ''; 
     $sql = "SELECT ... LIMIT 5"; // Select the five store items 
     $result = mysql_query($sql) or die(mysql_error()); 

     while($row = mysql_fetch_assoc($result)){ 
      $output .= // construct the HTML for your store items 
     } 

     echo $output; 
    } 
?> 

的index.php

function get_items(){ 
    $.ajax({ 
     url: 'ajax-handler.php', 
     type: 'post', 
     data: 'get-store-updates=true', 
     success: function(myItems){ 
      $('#item-wrapper').html(myItems); 
     } 
    }); 
} 

在這個例子中,東西三ggers get_items()的javascript函數,它會關閉ajax調用(一個POST請求到一個參數爲「get-store-updates = true」的ajax-handler.php,它滿足「if(isset($ _ POST ['get- store-updates']))「我放入PHP中)。如果Ajax請求成功(意味着它執行了調用,而不一定是PHP腳本工作),PHP腳本的輸出成爲JavaScript變量「myItems」。通過將我們的PHP響應存儲在JavaScript變量中,我們可以使用任意數量的jQuery方法輕鬆替換項目列表的內容(在本例中爲#item-wrapper)。

當然,如果您正在爲大型社區設計此功能,則需要爲高服務器負載做好準備。如果你真的想要看起來,請查看數據推送方法。