Lade-spinner, während Sie ajax-Anfragen in jQuery
Ich bin mit dem folgenden mockup zu zeigen, dass meine Ladesymbol, während Sie AJAX-Anfragen in meinen jQuery code:
jQuery.ajaxSetup({
beforeSend: function() {
$('#loader').show()
},
complete: function(){
$('#loader').hide()
},
success: function() {
$('#loader').hide()
}
});
Dieser code funktioniert für mich vollkommen in Ordnung!
Nur ein problem:
Einige Anfragen sind nur sehr einfach und schnell, so das Ladesymbol ist nur gezeigt für ein paar millisecs. Dass es natürlich nicht sehr schön.
Also versuchte ich mit setTimeout()
zur Anzeige der Beladung Drehfeld etwas verzögert. Ich will es nur pop-up, wenn die AJAX-Anfragen dauert mindestens, sagen wir mal 100ms, aber es hat nicht funktioniert.
So, ich brauche etwas code zu verzögern, das Ladesymbol als ich bereits oben erklärt habe, so dass es NUR erscheint, während Sie "mehr" AJAX-Anfragen!
- Wenn Sie sagen, "aber es hat nicht funktioniert", was hat nicht funktioniert? Können Sie uns zeigen, den code probiert?
- Auch... geh einfach auf die
!
und die:)
und diethx
. Meine Augen tun weh.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ich gelöst deine genannten Funktionen
Dies ist eine alte Frage, aber ich habe gefunden ein viel schöner und eleganter Ansatz. jQuery stellt eine variable
$.active
ist die Anzahl der aktuell aktiven ajax-Anfragen. Der Wert dieser steigt vorajaxSend
und sinkt nachajaxComplete
.Mit dem im Verstand, alles, was wir tun müssen, ist zeigen die spinner, wenn
ajaxSend
ausgelöst und$.active == '1'
- und ausblenden der spinner, wennajaxComplete
ausgelöst und$.active == '1'
. Hier ist mein code, die derzeit arbeitet einwandfrei.Hoffe, das jemand hilft.
Gemeinsame Lösung, die ich gesehen habe, um diese zu halten, ist das pulsierendes Sie sich für ein oder zwei Sekunden, auch wenn die Anfrage beendet ist schneller als das. So etwas wie:
Offensichtlich hat dies ein Kompromiss der die Dinge langsamer an den Kosten zu suchen, ziemlich, so, es ist Fall-abhängig, ob Sie wollen, dass die Treffer oder nicht. Wenn es etwas, das die ganze Zeit benutzt, sind Sie wahrscheinlich besser dran, zu akzeptieren, das hässliche. Wenn es etwas, das passiert jeden einmal und eine Weile, werden die Benutzer nicht bemerken, eine zusätzliche 500 mils.
Sollte dies funktionieren:
Nun müssen Sie, um dies zu verbessern ein bisschen, wenn Sie feuern mehrere Anfragen zur gleichen Zeit, aber hoffentlich bekommen Sie das Bild.
Jetzt Antworten, weil ich die Begegnung mit dem gleichen problem, und diese Antworten, die mir ein Teil der Lösung.
Um zu vermeiden, beginnen spinner, nachdem der ajax-request abgeschlossen ist, denn die Zeit der timeout ist breiter als Skript-Ausführung benötigen Sie ein up - /down-flag überprüfen, ist sehr einfach und ist Arbeit für mich.