私はずっとこのようなAJAXローダー持っている:私は本当のshowSpinner =を初期化し、私の定期的なAJAX呼び出しの直前にfalseに設定How to show loading spinner in jQuery?AJAX呼び出しのbeforeSendイベントを無効にする方法はありますか?
アップデート
後に編集:
$('#loadingDiv')
.hide() // hide it initially
.ajaxStart(function() {
if(showSpinner == true){
$(this).show();
}
else{
showSpinner = true;
}
})
.ajaxStop(function() {
$(this).hide();
})
;
からの。それはほとんどの時間で動作しますが、時にはスピナーがその時に表示されません。私はshowSpinnerの値をポーリングしていますが、それが設定されてからtrueに戻されるまでの間に、falseのままであるように見えます。
これは素晴らしく機能しますが、15秒ごとに実行される定期的なajax呼び出しもあります。そのためにajaxローダーを表示したくありません。私はこれを試してみた:
showSpinner = false;
// make ajax call to the database to check for new photos
$.ajax('/url', {
type:"post",
data: data,
success: function(response){
}
});
、それが表示され、スピナーを防ぐことができますが、時にはそれはあまりにも(それが正常に動作し、他の回)を呼び出し、他のAJAXのためのスピナーを無効にします。私はスピナーのbefore-enableへの再有効化を試みましたが、それは助けにはなりませんでした。上記のコードを実行するsetInterval呼び出しが削除されると、問題が修正されます。
私の他の選択肢は、Ajax呼び出しが発生するたびにスピナーを含めることですが、私はもっと一般的な解決策を望みます。誰もこれを回避する方法を知っていますか?
ありがとうございました。
私は答えはありませんが、メモを取っておきたいことがあります - > http://blog.jqueryui.com/2011/09/jquery-ui-1-9-milestone-6-spinner- 2/ – SpYk3HH
これは、いつでも複数のajax呼び出しを処理できるためです。 'async:true'を宣言することによって、次のajaxリクエストは、最初のリクエストが終了するまでロードを待機する必要があります。これはあなたの機能に関する問題を止めるべきであり、そのajax関数によって返されたデータが巨大でない限り、何の問題も起こらないはずです。 – Ohgodwhy
私はasync:trueがデフォルトであると思う。私はそれをfalseに設定しようとしましたが、ブラウザをロックするようです。 – ContextSwitch