2012-03-03 73 views
1

我想知道它是一個很好的方式來自動加載新的內容,而不刷新頁面。例如,之前在Twitter趨勢中,當有人發佈相關趨勢內容時,它會自動加載新提交的內容而不加載頁面。php jQuery的自動加載內容

我嘗試了一些方法,例如(拉法),在我的javascript我會設置的時間間隔加載FRM SQL查詢:

var auto_refresh = setInterval(function() { 
     $('#myLinks').load('http://domain.com/link/loadlatestnews').fadeIn(2000); 
    }, 400); // refresh every 400 milliseconds 

,但是這是一個好主意,因爲它需要在客戶端不斷試圖從sql每400毫秒加載一次。

是否有可能推式方法,如果有一個新的內容在MySQL中,設置一個事件回調?

回答

0

您可以通過這種方式

<script type="text/javascript" src="../js/jquery.min.js"></script> 
     <script type="text/javascript"> 
      // setTimeout(function(){ window.location.reload(); }, 2000); 

       $.ajax({ 
       success:function(){ 
        setTimeout(function(){ window.location.reload(); }, 2000) 
       } 
       }); 

     </script> 
+0

他是不是要求頁面重新加載他要求的方法刷新頁面上的內容每隔x分鐘通過ajax – Shaheer 2012-03-03 05:04:42

+0

是我已經使用ajax僅用於頁面刷新,在您的系統上運行 – 2012-03-03 05:13:50

+0

它不是頁面重新加載阿賈克斯使這刷新,, – 2012-03-03 05:14:25

2

你現在在做什麼,自動刷新是個好主意,但不輪詢服務器每400 MS,如果它是沒有太大的強大。另外,您應該在每個請求上向服務器發送最後的結束日期,以便僅加載該日期之後的內容,並且每次請求時都會返回新的最後日期。這樣你就可以檢查服務器是否有新的記錄,如果有的話就啓動一個函數。

+0

嗯這是一個很好的方式來做..所以我不會消耗這麼多的資源。我知道,太多的mysql加載導致CPU負載高 – nuttynibbles 2012-03-03 05:16:16

+0

嗨,我有一個問。如果有相同的時間戳r 2記錄什麼..如何獲得記錄呢?我的SQL查詢是:SELECT * FROM'records' WHERE 1 AND dateTimeSubmitted> 1330754710 ORDER BY dateTimeSubmitted LIMIT 1 – nuttynibbles 2012-03-03 06:56:50

+0

它們都會自動返回。 – Shaheer 2012-03-03 07:25:17

0

這取決於。你有沒有訪問你的服務器軟件?如果你願意配置它或不。

你需要的是彗星服務器:http://en.wikipedia.org/wiki/Comet_(programming)

但如果您的網站沒有大的你,你正在使用現在只可以使用定時輪詢技術。只要讓間隔更長。 400毫秒是短路的方法。同樣嘗試按照Shaheer的建議優化你的SQL。