2009-04-12 7 views
5

私の現在のWebアプリケーションプロジェクトでは、ajaxコールを頻繁に使用しています。彼らのほとんどは速くて直ちに反応します。したがって、常にajaxローダーを表示する必要はありません。しかし、私は、Ajax呼び出しが250ms以上かかると、ajaxローダーを表示したいと考えています。そうしないと、ユーザーは混乱し、リンクを何度も繰り返しクリックすることがあります。 :)即時ではなく遅延後にajaxローディングインジケータを表示します。

どのようにjQueryを使用して達成するためのアイデア?

答えて

4

私はちょうどこの使い、いくつかのコードの実行に簡単な遅延を達成するが、jQueryを使って以前の経験を持っていない:FOO()がロードの責任機能です

setTimeout ("foo()", 250); 

...表示を。

+0

はまた、あなたが文字列を使用している場合、それはevalされた取得しますので、それは、変数ではなく文字列としてのfooを使用するために、やや高速ですのでご注意: のsetTimeout(FOO、250); – moff

+0

@moff私はその提案が好きで、まだ試したことはありませんが、今からやります –

2

「loading ...」というメッセージを表示するのに250ms後にトリガーするためにJavascriptタイマーを使用できますか?

ajaxSend()でこれを有効にし、ajaxComplete()で無効にします(reqdの場合は 'loading ...'メッセージを消去してください)。したがって、実装はAjaxから呼び出されたものに透過的でなければなりません。

1
var activity = false; 
$("#loadingIndicator").ajaxStart(function() { 
    activity = true; 
    window.setTimeout(function() { 
     if (activity) { 
      //alert('activity'); 
      $("#loadingIndicator").show(); 
     } 
    } 
    , 700); 
}); 
$("#loadingIndicator").ajaxStop(function() { 
    activity = false; 
    $(this).hide(); 
}); 
関連する問題