1

AJAX を使用して、企業のフロントエンドとバックエンドの従業員の間で在庫品目のステータスを確認する動的な Web サイトを作成しています。1 人の従業員がリクエストを送信すると、後ろの人はそれがキューにポップアップ表示され、リクエストされたアイテムの在庫があるかどうかに応答します。フロントエンドの従業員は、要求のステータスが適切に変化することを確認します。

私が抱えている問題は、コードが AJAX を使用してデータベース内のテーブルからすべてのアクティブな要求を取得し、 jQuery の .empty() 関数を使用してコンテナーをクリアするときに発生します。古いリクエストをすべて保持し(2秒ごとにsetInterval())、AJAXの結果に基づいてオンザフライでビルドするPHPスクリプトを使用してキューを再生成するdiv。

コンテナー div の .empty() 関数を呼び出す setInterval() 関数により、キューが目に見えて消えて再表示されます。キュー全体を空にしてから更新されたステータスに基づいて再構築するのではなく、jQuery を使用してキューを更新するより良い方法はありますか? 古いリクエストのステータスが変更されている可能性があり、同様に更新する必要があるため、最新のリクエストを単純に照会することはできません。

うまくいけば、これは明らかです。そうでない場合は、さらに情報が必要かどうか尋ねてください。どんな助けも大歓迎です。ありがとう!

4

1 に答える 1

2

このようなもの...

$(document).ready(function(){Update();});

function Update() {
    $.ajax({
        url: 'http://example.com/url/to/poll',
        success: function(data) {
                $('#MyDiv').html(data);
                setTimeout('Update()', 2000);
        },
        fail: function() {
            //Something went wrong. Inform user/try again as appropriate
            alert('Failed');
            setTimeout('Update()', 2000);
        }
    })
}

現在の遅延が完了した後、次の 2 秒の遅延のみが開始されます。また、実際に Div を空にすることはなく、古いコンテンツを新しいコンテンツに置き換えるだけです。

于 2013-05-23T21:57:56.993 に答える