Wenn ich Sie gut verstehe, möchten Sie einen Fortschrittsbalken anzeigen, bis Ihr Server bereit ist, eine Datei zu senden, um den Fortschritt der heruntergeladenen Datei nicht anzuzeigen.
Wenn das stimmt, haben Sie es mit einer harten Übung zu tun. Eine zuverlässige Fortschrittsbalken muss wissen (ziemlich genau), was Sie tun und wie lange es dauern wird. In Ihrem Fall gibt es viele unzuverlässige Faktoren (einer von ihnen, vielleicht der größte, ist das Web selbst).
So verwenden die meisten Entwickler eine Art "endlose" Animation, um "work in progress" anzuzeigen.
Update
Basierend auf Ihren Kommentar, der einfachste Weg, ein "work in progress" Animation Im Falle einer einzigen Anfrage
$.ajax({
url: "/myscripts/myserverscript",
type: "POST",
data: {
foo: "bar"
},
dataType: "text",
beforeSend: function(xhr){
// display a progress animation
},
complete: function(xhr, status){
// hide the animation
}
...
});
würde anzuzeigen aussehen. Sie können auch einen globalen Ajax-Event-Handler für beide einrichten (.ajaxStart()
und .ajaxStop()
), um die show/hide-Funktionalität einzurichten.
Referenzen: .ajax(), .ajaxStart(), .ajaxStop()
Ich würde gerne wissen, wie man das macht –
Wie lange dauert es normalerweise, um die Datei zu generieren? – cherouvim
@cherouvim: Die Zeit ist hier nicht statisch. Es variiert zwischen Datei zu Datei. Es dauert mindestens 1 Sekunde bis maximal 20-30 Minuten. –