2017-08-21 23 views
0

ながら、私は特定のパラメータを選択し、をクリックした後、ボタン「を提出」ヒットこのJSPを持って、私はローディング画面がサーブレットをロード

<body> 
<input type=button class="button" id = "submit" value="Evaluate" 
onclick="JavaScript:return evaluateFunction()"> 
</body> 

以下と同様のJavaScript関数を呼び出していますを「提出」 evaluateFunction()は、私はすべてのパラメータを収集し、以下のように新しいポップアップウィンドウに新しいサーブレットを呼び出しています:

<script> 
function evaluateFunction(){ 
var win = window.open('ConfirmEvaluate?parameters,'mywindow','width=600,height=500,titlebar=no') 
} 
</script> 

今、問題はそうConfirmEvaluate servlet取りされますデータベースからデータを取得する時間(入力のサイズに基づいて15-20秒程度)、転送されたJSPにデータを表示する(userdata.jsp) これで15〜20秒でローディングGIFまたは画面を表示したいサーブレットはデータベースからデータをロードします。 どうすればいいですか?

私はすでに同じような質問をしてきましたが、いずれも特定の回答がありません。

+1

データをフェッチ – sForSujit

+1

可能な重複になるまで、あなたは前負荷のdivを表示することができます[サーブレットが読み込まれている間に何かを表示する](https://stackoverflow.com/questions/36303493/d​​isplay-something-while-servlet-loads) –

+0

@Sarahいいえ、それは特定の解決策がその質問で提供されていないので、あなたが答えが空いていることを知らないなら、私はすでにそれを通過しました、司会者のように行動しないでください。 –

答えて

0

あなたはAJAXを使用する必要があります。あなたの例のようなサーブレット要求は同期的です。つまり、処理が完了してから次の処理を行うまで待機します。

AJAXリクエストでは、非同期であるため、リクエストを送信して処理を完了するまで待たずに何かを実行できます。

私はこのに近づくような方法は、以下の方法である:

あなたはConfirmEvaluateでユーザの詳細情報を取得し、ユーザデータにユーザーをリダイレクトし、ユーザーがページ上で一度フェッチするAJAX要求を行います処理に時間がかかる情報要求が行われると、ローディングアイコンが表示されますが、AJAXリクエストから応答があった場合は、このローディングアイコンを非表示にすることができます。私は最近、このような何かを実装する必要がありましたAJAX requests with servlets

を作成する方法については、この華麗な記事をチェックアウト、ここにいくつかのサンプルコードは、次のとおりです。

<script> 
//when page loads, the ajax request starts 
$(document).ready(function() { 
    $(this).scrollTop(0); 
    getposts(username); 
    }); 

//ajax request that will show and hide the loader depending on response 
var getposts = function (username) { 
    var params = { 
      user: username   
     }; 
$.get("../GetUserFeed",$.param(params),function(responseXml) {  
     $("#user-feed").append($(responseXml).find("feed").html()); // Parse XML, find <data> element and append its HTML to HTML DOM element with ID "somediv". 
     $('#logo-loader').hide(); 
      if(isBlank(responseXml)){ 
      $('#logo-loader-completed').show(); 
      $('#logo-loader-image').hide(); 
     } 
    }); 
}; 

</script> 
関連する問題