2012-02-27 9 views
0

通常のhttpリクエスト中に "Loading .."/"In Progress .."というメッセージが表示されます。これはHTTP要求サイクル中にのみ表示され、要求が完了して応答を受け取ると消滅します。私は定期的なHTTPリクエストとHTTPリクエストに熱心で、AJAXではなく時間がかかります。コードブロック、例、ポインタが高く評価されています。ここでは1つのアプローチがあります。私は共通のアプローチをしたいので、どのHTTPリクエストにも使用できます。javascript/jquery/phpのhttpリクエスト(長時間実行)実行中に "進行中"を表示

+0

(結果を取得し、スタイルをリセットするためにonreadystatechangeにを使用して)、スタイル、クラス..変更は呼び出しが戻る前にレンダリングすることができ、非同期呼び出しに呼び出し、[拡張の可能性の重複を変更jQueryのajax関数](http://stackoverflow.com/questions/8358422/extending-jquerys-ajax-function) –

+0

@MarkSchultheissここでは、あなたのための通常のhttp要求/応答fyiではなく、ajaxのものについて話しています。 – nepsdotin

答えて

0

通常、(AJAXではなく)通常のHTTPリクエストを実行する場合、クライアントブラウザには進捗インジケータが用意されています。このインジケータはブラウザとプラットフォームによって異なり、あなたはそれに頼ることはできません。

あなたがページから離れてしまえば、JavaScriptが機能しなくなるので、進行状況インジケーターを表示するためのjavascriptソリューションは探しません。このHTTPリクエストがどのようにトリガされるかに応じて、それを達成するためのさまざまな方法があります。たとえば、通常のHTTPリクエストをトリガーするマークアップ内にアンカータグがある場合、このアンカーのクリックハンドラを購読して、javascriptを使用してアニメーションスピナーを表示し、ブラウザにリダイレクトさせます。

AJAXリクエストに関しては、.ajaxStart().ajaxComplete()グローバルハンドラを購読して、いくつかのスピナーを表示したり非表示にしたりすることができます。

もちろん、すべては実装によって異なります。すべての可能なケースを処理する魔法の解決策はありません。ですから、基本的には、あなたの具体的な状況に合った解決策を見つけなければなりません。

0

ページが完全に読み込まれると非表示になる要素がページに存在する可能性があります。例えば:

<img id="loading" src="loading.gif" alt="Loading..." /> 

<script type="text/javascript"> 

$(function() { 
    $('img#loading').hide(); // Called when whole page has been loaded 
}); 

</script> 
+0

代わりに$(window).ready()を使用しませんか? – shaunsantacruz

1

あなたはbeforeSendと、完全なイベントを使用する必要があります。

$.ajax({ 
    ... 
    beforeSend: function(){ 
     //Here you loading SHOW 

    }, 
    complete: function(){ 
    //Here you loading HIDE 

    } 
    ... 
}); 
0

私は純粋なJavaScriptのHTTPRequestの同期呼び出し(jQueryのではない場合)の間に任意の情報をレンダリングすることはできないと思います。 sendメソッドを呼び出す直前にクラスclassを変更すると、この情報はレンダリングされません。この問題を解決するには

、私は

関連する問題