2010-12-05 10 views
0

私は2つのasp.netページを持ち、ページ1からページ2に移動するのに何度かかかります。 (ページ2はデータへのアクセスを行います)。したがって、Page2の読み込みが完了している間は、読み込み中のページまたはインジケータを表示します。asp.netページのjQueryローディングページ/インジケータ

jQueryでこれを行う方法はありますか?

ありがとうございました。

+0

サーバー側の負荷であるため、Ajaxコールの権利ではありません。 – kobe

+0

実際のページの再読み込みではなく、Ajax呼び出しを使用する場合のみです。 –

答えて

0

データアクセスを実行してメモリに格納するページを呼び出します(たとえば、Memcachedを使用)。

非常に長いプロセスではない(タイムアウトしない)場合は、getJSONを使用してサーバーに電話をかけることができます。このスクリプトはデータベースにアクセスし、その結果をキャッシュに格納することができます。処理が終了すると、それを呼び出すために必要なもの(つまり、memcachedに保存したキー)を含むJSON応答が出力されます。応答が返ってくると、ページにリダイレクト(キーを渡す)し、ページから必要なデータをキャッシュから読み込みます。

サーバーの処理にどのようなコードが含まれているのかわからないので、ASP .NET MVCで行うことの例を挙げておきます。

のJavaScript(クリックイベントか何かで):

$("#loadingIndicator").show(); 
$.getJSON('/DataAccess', function(data) { 
    window.location.href = '/CacheReader/' + data.Key; 
}); 

サーバー:

// Returns the JSON with the key 
public ActionResult DataAccess() { 
    var row = GetRow(); 
    var key = Guid.NewGuid(); 
    Cache.Store(key, row); 
    return new Json(new { Key = key }); 
} 

// Using the key, get the data from cache and output nicely. 
public ActionResult CacheReader(string key) { 
    var cachedRow = Cache.Read(key); 
    return new View(cachedRow); 
} 

サーバのコードは、おそらくいくつかのエラーを持っていますが、それがうまくいけば私のポイント伝わります。このコードは、JSONが応答するまで(すべてがキャッシュにあることを意味する)、ページにローディングインジケータを表示します。その後、正しいページにリダイレクトされます。インジケータを消してタイムアウト/エラー時に 'Oops'メッセージを表示するようなものを用意することは良い考えです。ちょうどそのユーザーは永遠に待つことはありません。

関連する問題