0

私が望むのは、HTML私のメソッドが時間のかかるAJAX呼び出しとDOM操作を行っている間に、私の にローダー バーを追加することです。

問題は、そのshow()メソッドが呼び出しが完了するまでローダー バーを表示しないAJAXことです。これを修正するにはどうすればよいですか?

メソッドを強制してから、呼び出しなどshow()を実行してから、メソッドを強制したいのです。AJAXDOMhide()

AJAX呼び出しを行うメソッド:

$('.my-button').on('click', function(){
   $('#display-loader').show();
   // ajax and dom manipulation
   $('#display-loader').hide();
});

編集:私の問題が何であるかについて誤解があるようです。コードを次のように変更すると:

$('.my-button').on('click', function(){
   $('#display-loader').show();
   // ajax and dom manipulation
});

メソッドが完了するまで、まだローダーバーを表示しません。メソッドをAJAXスキップし、何かを実行してから、後で呼び出します。show()AJAXshow()

すべてのAJAXコールが にasync設定されましたfalse。5 つのAJAX呼び出しがあり、各AJAX呼び出しは前の呼び出しからフェッチされたデータに依存しています。 to を設定する方法がありません。asyncこれtrueを回避し、強制的にDOM画像を表示してからAJAX呼び出しを行う方法はありますか?

4

3 に答える 3

1

次に行うことができます:

showLoader();
$.ajax({
   type : 'POST',
   url : url,
   data : postData,
   success : function (returnData) {

   },
   error : function (xhr, textStatus, errorThrown) {

   },
   complete : function (){
       hideLoader();
   }
});
于 2013-08-06T18:20:43.107 に答える
-1

おそらく次の方法をお勧めします。

$.ajax({
  .....
}).done(function () {
  hideLoader();
});

これにより、ローダーが確実に消えます。ajax が成功しない場合、成功のコールバックに到達することはなく、ローダーはページにとどまります。

しかし、それはシナリオに依存します。エラーコールバックに入れることもできます。

于 2013-08-06T18:22:59.013 に答える