0

index.php と images.php があります。そして、私が欲しいのは、index.php の特定の div が images.php からコンテンツを自動的に取得し、images.php に新しいコンテンツが存在するときに更新されることです。私は現在これを持っています:

$(document).ready(function() {
$.ajaxSetup({ cache: false });
setInterval(function() {
    $('#images').load('images.php');
}, 500);
});

これは正常に動作しますが、.5 秒ごとに div が更新されるのは望ましくありません。新しいコンテンツが images.php に挿入されたときにそれを検出し、それをロードする必要があります。

しかし、問題は、images.php にいくつかのタイムスタンプ (1 分前など) があることです。そして、jQuery はそれらを変更として検出し、更新します。

images.php ページのイメージ タグ () の数を数え、<img>index.php ページの div のイメージ タグの数と比較し、等しくない場合は、div を更新する方法はありますかindex.php.

4

2 に答える 2

0

短い答えは - いいえ。

コードのサーバー側とクライアント側があることを理解する必要があります。ブラウザがリクエストを送信するたびに、フォーマットされた html ページ (実行する php スクリプトではない) を取得し、すべての埋め込みリソース (画像、css、js ファイルなど) を取得します。

その後、クライアント (ブラウザー) とサーバー (Web サーバー) の間で通信は行われません。更新された「images.php」ページを取得するには、サーバーから現在ページを見ているすべてのブラウザーに通知を送信する必要があります (これはわかりません - それらとの固定接続が必要ですが、htmlプロトコルはステートレスであるため、これを実現する簡単な方法はありません)。

したがって、最も簡単な方法は、n 秒ごとにブラウザの ping サーバーをタイムリーに実行することです。ただし、n 秒ごとにすべての画像を取得するのではなく、最終変更日を取得する方がよいでしょう。また、変更日が新しい場合に新しいデータを取得するロジックを用意すると、アプリケーションから送信されるトラフィックの量が削減されます。

于 2013-02-02T23:31:30.420 に答える
0
var imageWrapper = $('#images'),
    imageCount = $imageWrapper.find('img').length;

setInterval(function() {
    $.get('images.php', function (html) {
        html = $(html);
        if ( html.find('img').length > imageCount ) {
            $imageWrapper.html( html );
        }
    });
}, 500);
于 2013-02-02T23:37:15.783 に答える