2015-04-03 71 views
-2

我在面板中使用了引導主題廣告。 我有3個進度條,我想每3秒更新一次。 我設法用另一個頁面內容更新它們,這正是我想要做的。現在他們正在全天候更新,當它每3秒閃爍一次並且保持不變時,它非常煩人。 我只是想知道是否有一種方法來更新如果其他頁面的內容已更改?僅在其新內容時每3秒更新JavaScript

編輯:有沒有任何方法也使它更新更好?而不只是閃爍?也許慢慢淡出。

這裏是我到目前爲止已經試過....

<script type="text/javascript"> 
(function($) 
{ 
    $(document).ready(function() 
    { 
     $.ajaxSetup(
     { 
      cache: false, 
      beforeSend: function() { 
       $('#nav_bar_top').hide(); 
       $('#loading').show(); 
      }, 
      complete: function() { 
       $('#loading').hide(); 
       $('#nav_bar_top').show(); 
      }, 
      success: function() { 
       $('#loading').hide(); 
       $('#nav_bar_top').show(); 
      } 
     }); 
     var $container = $("#nav_bar_top"); 
     $container.load("http://mywebsite.com/assets/ajax/get_bar.php"); 
     var refreshId = setInterval(function() 
     { 
      $container.load('http://mywebsite.com/assets/ajax/get_bar.php'); 
     }, 3000); 
    }); 
})(jQuery); 
</script> 
+0

使用間隔異步內容通常是一個壞主意。當您替換內容時,它會閃爍。也許你應該只更新屏幕,如果數據改變。 – epascarello 2015-04-03 15:28:32

+0

會將此間隔增加到60秒還是120秒?爲什麼需要經常更新?爲什麼需要更新? – 2015-04-03 15:29:18

+0

考慮'cache:true,'? – mplungjan 2015-04-03 15:30:37

回答

1

我不會循環阿賈克斯,但使用回調發出新的呼叫。

例如

var content = ""; 
var $container = $("#nav_bar_top"); 
loadIt(); 

其中

function loadIt() { 
    $.get("http://mywebsite.com/assets/ajax/get_bar.php",function(data) { 
    if (content != data) { 
     $container.html(data); 
     content=data; 
    } 
    setTimeout(loadIt,3000); 
    }); 
} 

要淡入和淡出嘗試

if (content != data) { 
     $container.fadeout("slow",function() { 
     content=data; 
     $this.html(data); 
     $this.fadein(slow); 
     }); 
    } 
+1

不要複製想法 – Jay 2015-04-03 17:22:54

+0

絕對認爲這至少比setInterval更好,即使請求花費的時間比較長,setInterval也會連續發送請求設定的時間間隔或失敗。使用這種方法可以提供更多的控制權,並允許您使用更多的代碼正確處理錯誤。 – 2015-04-03 17:50:01

+0

不要複製什麼想法?這是應該如何重複Ajax調用。我不得不走路,所以當我說不循環時,這就是我的意思。沒有仇恨投票我希望? – mplungjan 2015-04-03 19:20:38