ciao a tutti
in un progetto che sto sviluppando ho uno script (in ASP, ebbene ancora in ASP) di interrogazione al DB e salvataggio risultati piuttoso lungo e articolato.
nella versione precedente la svangavo con un iframe, e popup estetico con un gif animata.
ora utilizzo una chiamata ajax all'interno di una finestra modale thickbox, che poggia sul FW jquery. in questa finestra modale c'è la classica gif animata da indicatore di attività. e tutto funziona correttamente.
ora mi sono incistato a voler mettere al posto della gif una progress bar.
l'idea che ho provato a implementare è questa.
1) nello script di ricerca, chiamato con ajax, ho fissato dei benchmark, ognuno dei quali rappresenta un tot % di avantamento dello script.
2) una funzione js nella finestra modale legge questi benchmark e aggiorna con cognizione la progress bar. la funzione è chiamata in continuazione con il setInterval.
in prima istanza ho pensato ai cookie. li scrivo ASP sul primo script, li leggo tramite javascript nella finestra modale.
non va. fintanto che lo script non è completato i cookie non sono 'scritti' sul client. questo perché ovviamente tutto l'output è bufferizzato nel server sino al completamento dello script. [ma l'ho considerato solo dopo].
al che ho pensato: uso una tabella di appoggio del DB come 'canale' comunicativo, quindi
3) nel javascript chiamato in continuazione con setInterval c'è invece un'altra chiamata ajax che va a leggere la tabella e riporta il risultato. questa chiamata è molto più rapida, ovviamente.
non va.
in effetti eseguendo la ricerca, e guardando dentro al DB vedo modificarsi la percentuale, all'avanzare dell'altro script.
però fintanto che lo script di ricerca (quello lungo) NON è terminato nemmeno l'altro, quello corto che eseguo con una differente chiamata AJAX, non mostra risultati di sorta. come se il buffer dello script lungo tappasse quello dello script corto.
ora, sapendo che utilizzo il plugin AJAX di jquery, le domande, finalmente:
1) perché una chiamata ajax distinta da un'altra aspetta che anche questa sia terminata prima di inviare il risultato?
2) è una limitazione secondo Voi di jquery? oppure è una caratteristica delle chiamate con l'oggetto XMLHTTP?
3) devo de-incistarmi dall'idea della progress bar (che non deve monitorare lo stato di avanzamento di un upload)? oppure mi sono incistato a seguire una via sbagliata? :master:
grazie a chiunque getterà un po' di luce...
zeno