2016-12-30 4 views
1

私は、過去4時間から5時間にわたって、スタックやその他の場所を調べて、問題の解決方法を見つけました。DIVの一定のリロード?

5行の情報を含むページの内部にIframeがあり、情報がデータベースから取得されます。上記の情報は常に変化するため、必要に応じて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> 

私はiFrameをリフレッシュするためにHTMLを使用することができます知っているが、画面全体の左上隅には任意のヘルプははるかに高く評価され、3秒ごとに更新されたときに、それは見苦しいに見えます。

おかげ

答えて

1

私はあなたがこの種のもののためのAjax呼び出しを使用することを期待したいです。あなたはiframeをリフレッシュするのを避けるために、jQueryを色づけして要素の内容を更新しています。 Iframeの機能は限られており、通常はWebページのコンテンツを更新するためだけにiframeを使用するのは意味がありません。

ブラウザのクラッシュは、set internalの使用に起因する可能性があります。通話が完了するまでに5秒以上かかると、複数の通話がスタックアップすることがあります。しかし、あなたのケースでは、それが問題ではないように感じます。そのオレンジ色をすばやく更新できるはずです。いずれにしても、より良いアプローチは、更新プロセスが実行されるたびに1回の実行のためのタイマーを設定することです。そうすれば、コールに時間がかかり過ぎると、スタックしているリクエストだけではありません。

1

使用は、​​コールバックを使用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

感謝のためsetTimeout()を置き換えることができます。

PHPとHTMLを別々のファイルに分割し、HTMLファイルからdivを呼び出すだけで、ほぼ同じスクリプトを使用してしまいました。

関連する問題