4

私の Web アプリケーションでは、$.ajax()リクエストを使用してデータベースからデータをロードし、ブラウザに表示しています。リクエストの実行中に、次のLoading Results ...ようなメッセージを表示します。

$.ajax({
    // ...
    beforeSend: function() {
        $('#loading-results-message').show();
    },
    complete: function() {
        $('#loading-results-message').hide(); 
    }
});

これはうまくいきます。ただし、ロードするデータがあまりない場合、リクエストにかかる時間はほんの一瞬です。この場合、メッセージもほんの一瞬だけ表示されます。このアニメーションは非常に速く発生するため、認識が困難です。したがって、要求に一定の時間がかかる場合 (つまり、少なくとも数秒かかるが、1 秒未満ではない場合) にのみメッセージを表示できると便利です。それはどういうわけか可能ですか?ところで、私はサーバー側で Django を使用しています。

4

2 に答える 2

8

タイマーを確立するために使用setTimeoutし、リクエストが完了したらタイマーをキャンセルします。

var desired_delay = 2000;
var message_timer = false;
$.ajax({
    // ...
    beforeSend: function() {
        message_timer = setTimeout(function () {
            $('#loading-results-message').show();
            message_timer = false;
        }, desired_delay);
    },
    complete: function() {
        if (message_timer)
            clearTimeout(message_timer);
        message_timer = false;
        $('#loading-results-message').hide(); 
    }
});

ドキュメンテーション

于 2013-02-14T18:11:48.160 に答える
0

私はこのソリューションについて@chrisと一緒です。しかし、 http://api.jquery.com/jQuery.ajaxSetup/を調べてみる価値もあるかもしれません。

これにより、リクエストごとにタイムアウトを記述する必要がなくなります。

于 2013-02-14T18:17:40.127 に答える