2016-12-30 138 views
1

好吧,我在過去的4或5個小時裏,一直在四處看看Stack和其他地方,試圖找到解決我的問題的方法。不斷重新加載DIV?

我有一個Iframe內包含5行信息的頁面,信息從數據庫中獲取。所述信息將不斷變化,因此需要每隔1-5秒刷新一次,如果需要可以延長至10秒。

我已經使用了下面的代碼,它可以工作,但由於某種原因我的瀏覽器崩潰了,我估計重裝太快了?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
<script type="text/javascript"> 
    var auto_refresh = setInterval(
    function() 
    { 
     $('#info').load('mid.php'); 
    }, 5000); // refresh every 5000 milliseconds 
</script> 

下面是從mid.php代碼(有PHP頁面裏面,但是這是我需要刷新的部分)。

<div id="info"><font size="2"> 
    <b>Crimes: </b><font color="white"><?php if ($fetch->lastcrime <= time()){ echo 'Ready'; }else{ echo "".maketime($fetch->lastcrime).""; } ?></font><br> 
    <b>GTA: </b><font color="white"><?php if ($fetch->lastgta <= time()){ echo 'Ready'; }else{ echo "".maketime($fetch->lastgta).""; } ?></font><br> 
    <b>Chase: </b><font color="white"><?php if ($fetch->last_chase < time()){ echo 'Ready'; }else{ echo "".maketime($fetch->last_chase).""; } ?></font><br> 
    <b>Extortion: </b><font color="white"><?php if ($fetch->last_ext < time()){ echo 'Ready'; }else{ echo "".maketime($fetch->last_ext).""; } ?></font><br> 
    <b>Rank:</b><?php echo "$fetch->rank"; ?></td></tr> 
</div> 
</table> 

我知道我可以使用HTML刷新的iframe但是當屏幕的整個左上角刷新每3秒它看起來不雅觀,任何的幫助深表感謝。

謝謝

回答

1

我希望你使用Ajax調用這種事情。通常情況下,可以讓jQuery更新元素的內容以避免刷新iframe。內聯框架的功能受到限制,並且通常僅將其用於更新網頁內容是沒有意義的。

瀏覽器崩潰可能來自使用set internal。如果通話時間超過5秒鐘,多個通話可能會疊加。但對於你的情況,我覺得這不是問題,因爲它應該能夠很快更新橙色。無論如何,更好的方法是每次執行更新過程時爲其執行一次執行計時器。這樣,如果通話時間過長,則不要只是將請求疊加在一起。

1

使用可以使用​​回調,替代setTimeout()setInterval

$(document).ready(function() { 

    let timeout; 
    let duration = 5000; 
    let stop = false; 

    function update() { 
    $("#info").load("mid.php", function() { 
     if (timeout) { 
     clearTimeout(timeout) 
     } 
     if (stop === false) { 
     timeout = setTimeout(update, duration) 
     } 
    }); 
    } 

    update(); 

}); 
-1

感謝。

我最終使用了幾乎相同的腳本,只是將PHP和HTML拆分爲單獨的文件並從HTML文件中調用div。