1

関数はjquery.ajax()メソッドを使用してサーバーからデータを取得し、それを戻り値として使用します。async=trueを使用すると、関数は途中で空の値を返します。async=falseを使用すると、関数の待機が長すぎます。リクエストの直前に回転時計を表示するトグル div を試みましたが、リクエストが終了するまで div は表示されません。

ブラウザをロックしたり、待機アイコン/記号/テキストを表示したりしない方法について何かアドバイスはありますか?

4

3 に答える 3

2

できません。同期リクエストは、進行中のアニメーションや保留中の dom の変更など、ブラウザをロックします。これが推奨されない理由です。おそらく、ajax リクエストを起動する関数から値を返そうとしていますが、これは非同期リクエストでは機能しません。ロジックを変更して、成功コールバックで応答処理を処理すると、すべてがうまくいきます...

于 2010-08-02T06:00:10.227 に答える
1

ブラウザをロックしないようにするには、非同期リクエストを使用する必要があります。コードまたは ajax レスポンスのリファクタリングが必要になる場合があります。

それでも非同期リクエストを使用したくない場合は、次のようにすることができます。

  1. 回転時計を挿入して表示
  2. 準備ができたら (コールバックを意味します)、ajax リクエストを行います
  3. 最後に時計を外します
于 2010-08-02T04:35:12.193 に答える
1

1 つの方法は、画像を配置することです (読み込み中... gif アニメーション)。ajaxを送信する前に表示してください。次に、成功時に非表示にします。以下のように。

$.ajax({
  url: 'ajax/test.html',
  beforeSend : function(){
     $('#LodingImg').show(); // show image..
  },
  success: function(data) {
    $('#LodingImg').hide(); // hide image
    $('.result').html(data);
    alert('Load was performed.');
  }
});
于 2010-08-02T04:36:12.530 に答える