2009-04-02 6 views
1

Anstelle des typischen "Loading ..." oder animierten Gifs möchte ich eine bessere Beschreibung dessen, was vor sich geht, anzeigen. (So ​​ähnlich wie einige Splash-Screens für Anwendungen). Ein Blick auf die Jquery-Dokumentation scheint jedoch keine Möglichkeit zu sein, die Änderung im XMLHttpRequest-Zustand zu erhalten.Jquery ajax erhält den Status XMLHttpRequest

Was würde Ich mag zu tun, so etwas wie diese

wenn case = 1 Anzeige "Starten"

wenn case = 2 Anzeige "immer näher"

wenn case = 3 Anzeige „I bin fast da“

wenn case = 4 Anzeigeinhalt

bin ich etwas übersehen oder sollte ich jQuery ajax-Methoden verlassen und meine eigene schreiben?

Antwort

0

Sie müssen einen Web-Service in einigen Zeitabständen abfragen und nur das zurückgeben, was für Ihre Anwendung geeignet erscheint (wie die von Ihnen präsentierten Meldungen) und die Fortschrittsanzeige aktualisieren. Der Prozess ist zweigeteilt: Der erste Schritt besteht darin, den Vorgang einzuleiten, der ausgeführt werden muss, und der zweite Schritt besteht darin, den Server ständig abzufragen, um festzustellen, ob der Vorgang abgeschlossen ist.

Sie müssten jedoch irgendwie den aktuellen Betriebsstatus auf dem Server speichern. Ich weiß nicht, mit welcher Technologie Sie arbeiten, daher kann ich Ihnen nur sagen, dass Sie etwas verwenden sollten, das Ihr Framework der Wahl bietet, aber stellen Sie sicher, dass der Prozessstatus in einer Variablen festgelegt ist, die persistent sein kann (HTTP ist zustandslos). in Beispiel in einer Sitzungsvariablen. Es kann schwierig sein, diesen Wert zwischen dem laufenden Prozess und der Abfragemethode zu synchronisieren.

Insgesamt werden solche Splash-Screens eher in Desktop-Anwendungen oder in Webanwendungen verwendet, wenn die Verarbeitung auf dem Client ausgeführt wird. Ich glaube nicht, dass es eine gute Idee ist, einen Aktualisierungsfortschritt zu erzielen, wenn die Methode, die Sie asynchron ausführen, auf dem Server residiert. Eine Fortschrittsanzeige wie diese wäre gut, wenn Sie Assets (wie Bilder oder andere Dateien) laden und die aktuell geladenen Elemente/Größe im Vergleich zur Gesamtgröße usw. zählen können. Egal, ob die Verarbeitung auf dem Server oder auf dem Client aufgerufen werden, es zählbar sein muss ...

Wenn Sie nicht noch einen weiteren dumpfen „Loading ...“ wollen Anzeige in Ihrer Web-Anwendung, können Sie zufällig einige lustige Zitate oder andere Texte aus einem Array anzeigen.

Beste Lösung - minimieren Sie die Zeit, die für die Bearbeitung der Anfrage benötigt wird. :)

+0

Danke für den tollen Rat. Du hast etwas berührt, an das ich wirklich nicht gedacht habe; das ist die Zeit, die es dauern würde, um abzurufnen und neu zu laden. Vielen Dank. – Scott

+0

Kein Problem. Ich bin froh, dass ich helfen konnte. Ich habe auch vergessen zu erwähnen, dass die ständige Abfrage des Servers auch Ressourcen verbraucht - Sie machen viele "unnötige" Anrufe, während der Server etwas verarbeitet. Jetzt denken Sie, dass Sie so viele Benutzer wie StackOverflow haben. :) –

Verwandte Themen