0

私は車輪を再発明しているかもしれませんが、それは意図的なものです. PHP HTML MySQL CSS を使用してリアルタイム チャット アプリケーションを作成しようとしています。ネットワーク上で非常にうまく機能し、毎秒新しいコンテンツを取得しています. IE では、毎秒ちらつきに気付くことがあります。新しいコンテンツがなくても、すべてのデータが何度も引き出されているように見えますが、私はそれが好きではありません。

これが私のリフレッシュJSコードです:

 $(document).ready(function() {
     $("#data").load("data.php");
   var refreshId = setInterval(function() {
      $("#data").load('data.php');
   }, 1000);
   $.ajaxSetup({ cache: false });
});

data.php は、すべてのデータベース レコードをループして表示しています。

    while ($row = mysql_fetch_array($result))
    {
    echo "<p><b>". $poster ."</b>: ". $message ."<br /><span style='font-size: 10px;'>". date('D d M - g:i:s a', strtotime($row['when'])) ."</span></p>";
    }

私は解決策、退色などをインターネットで調べましたが、これを達成する方法が思いつきません。確かに、素晴らしく簡単で効率的な方法がありますか?

4

3 に答える 3

1

最後の更新のタイム スタンプをサーバーに渡し、新しいコンテンツのみを取得する必要があります。

于 2011-04-21T02:38:02.193 に答える
0

私がシャウトボックスで個人的に使用している最良の解決策は、ロードされたデータにグローバル変数を使用して変数を設定することです。

例:

<script type="text/javascript">
var global_var = 1234;
</script>
<p>HTML CONTENT GOES HERE</p>

次に、data.php を呼び出すときに、この新しいパラメーターを使用して呼び出すことができます。

$("#data").load('data.php?var=' + global_var );

あなたのglobal_varは、最後に挿入されたID、または最後のタイムスタンプ、または???から何でもかまいません。

于 2011-04-21T02:40:03.620 に答える