Se ti capisco bene, vuoi mostrare una barra di avanzamento fino a quando il tuo server è pronto per inviare un file, non per mostrare l'avanzamento del file che sta per essere scaricato.
Se è vero, hai a che fare con un esercizio difficile. Una barra di progressione affidabile deve sapere (abbastanza esattamente) cosa stai facendo e quanto tempo ci vorrà. Nel tuo caso, ci sono molti fattori inaffidabili (uno di questi, forse il più grande, è il web stesso).
Quindi la maggior parte degli sviluppatori utilizza una sorta di animazione "infinita" per visualizzare "lavori in corso".
aggiornamento
Sulla base di un commento, il modo più semplice per visualizzare un "work in progress" di animazione sarà simile
$.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
}
...
});
Nel caso di una singola richiesta. È anche possibile impostare un gestore di eventi ajax globale per entrambi (.ajaxStart()
e .ajaxStop()
) per impostare la funzione Mostra/Nascondi.
Riferimenti: .ajax(), .ajaxStart(), bar .ajaxStop()
Mi piacerebbe sapere come procedere –
Quanto tempo è necessario per generare il file? – cherouvim
@cherouvim: Il tempo non è statico qui. Varia da file a file. Ci vuole un tempo minimo di 1 secondo a un massimo di 20-30 minuti. –