Ich habe einen Ajax-Anruf, der eine große json-Liste ergreift. Gibt es eine Möglichkeit, einen Fortschrittsbalken zu erstellen, der den tatsächlichen Wert von json load erhält (z. B. eine Statusleiste, die 1 von 200 geladenen angibt)?
Im Moment habe ich einen ziemlich einfachen Ajax-Anruf
%Vor%Versuchen Sie, AjaxStart für den globalen Anwendungsbereich Ihrer Anwendung zu verwenden. Das bedeutet, dass Sie den Code in Ihre Layoutdatei einfügen können. Wenn die Verarbeitung lange dauert, wird der Fortschrittsindikator angezeigt ...
%Vor%Sie können das Beispiel sehen und antworten unter mit prozentual laden - javascript / jquery .
Es gibt einige Zustände in einer Ajax-Anfrage, aber sie repräsentieren keinen Prozentsatz durch die Anfrage.
Der Netzwerkverkehr sollte wirklich Ihr wirkliches Problem sein, Sie wollen nicht 200 separate Anfragen senden (obwohl dies eine Fortschrittsanzeige ermöglichen würde, würde die gesamte Anfrage je nach Netzwerkverbindung zum Server erheblich länger dauern ).
Sie sollten am besten einen Aktivitätsindikator anzeigen und ihn entfernen, wenn die Anfrage abgeschlossen ist, und versuchen, Ihre Code-Server-Seite so zu optimieren, dass die 200 Elemente so schnell wie möglich zurückgegeben werden.
Wenn 200 Elemente wirklich zu groß sind (größer als X Sekunden, um sie zurückzugeben), könnten Sie sie in zwei oder vier Teile aufteilen, um einige Fortschritte anzuzeigen, dies wird jedoch Zeit mit diesen zusätzlichen Anfragen im Netzwerk verschwenden , Seitenköpfe usw.
Wenn Ihr serverseitiger Code eine Möglichkeit bietet, den Anwendungsstatus zu teilen (z. B. $ _SESSION in PHP), können Sie zwei separate Anfragen stellen, die nach den Daten fragen und eine, die den Fortschritt der ersten Anfrage prüft. Wiederholen Sie die zweite Anforderung für einen Zeitgeber, bis der erste abgeschlossen ist, und aktualisieren Sie die $ _SESSION (oder was auch immer in Ihrem Servercode funktioniert), während jedes Element verarbeitet wird.
Zum Beispiel: Die erste Seite muss eine Sitzung starten, damit die nachfolgenden AJAX-Aufrufe den Cookie enthalten und auf die freigegebenen Daten zugreifen können:
%Vor%Erster AJAX-Aufruf, um die Verarbeitung zu starten:
%Vor%Der zweite AJAX-Aufruf (wird alle x Sekunden wiederholt) sieht folgendermaßen aus:
%Vor%Tut mir leid, ich kenne ASP.NET nicht, aber hoffentlich ist der obige Code für Sie nützlich.
Tags und Links asp.net-mvc javascript jquery ajax