Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    138

    progress bar... particolare

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    premettendo che non sono in grado di fare una cosa cosi...posso solo fornirti un link dove parlano di questa cosa...pero' in php.... Magari pero' usano la stessa tecnica o una che cmq puoi usasre...
    sicuramente te capirai di piu del sottoscritto.

    http://www.modphp.org/?postid=2

    spero ti possa esser d'aiuto
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    138
    ciao.

    grazie della dritta.
    ora ci do un'occhiata. in effetti, la tecnologia lato server dovrebbe, sottolineo dovrebbe, essere ininfluente. qui si tratta di capire come agisce l'oggetto XMLHTTP e si suoi dintorni.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    138

    nulla... non è la dritta giusta.

    il punto nodale, mi pare di capire sempre di più, è il fatto se una chiamata mediante XMLHTTP si accodi ad un'altra già in esecuzione o meno....

  5. #5
    Potrebbe dipendere dal tipo di chiamata Ajax, se è sincrona o asincrona?

    Ti riporto quanto scritto in merito al metodo open() dell'oggetto XMLHttpRequest a questa pagina:

    Il parametro "async" specifica se la richiesta deve essere gestita in modo asincrono o no.
    True significa che l'esecuzione dello script continua dopo il metodo send(), senza aspettare il responso del server.
    False significa che lo script attende il responso prima di continuare l'esecuzione.


    Spero possa esserti utile.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    138
    ...grazie.

    sto giustappunto pensando di risalire il filo logico dell'utilizzo di XMLHTTP.
    come dicevo utilizzo il plugin di Jquery... potrebbe essere che metta a disposizione l'oggetto in maniera versatile sino ad un certo punto.

    mi sa che andrò a ripescarmi gli script di prova con cui avevo giocato con ajax qualche mese fa...

  7. #7

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    138
    Originariamente inviato da emanueledg
    Potrebbe dipendere dal tipo di chiamata Ajax, se è sincrona o asincrona?
    dunque. ho ripreso gli script ajax di qualche mese fa. confrontandola con la pagina segnalatami. in effetti si trattava sempre di chiamate asincrone.
    ho guardato dentro il codice jquery. ed in effetti anche in quel caso si utilizzano delle chiamate asincrone.

    poi ho fatto altre prove.
    in buona sostanza lo script più lungo occupa il server. lo script più corto [che richiamo con il setInterval in maniera ciclica] rimane 'accodato'. che ne so: chiamata ogni 200 ms di quello corto, se quello lungo dura 20 secondi [misuro con timer quesi valori] ecco che una volta esaurito viene chiamato 100 volte quello corto. è come se il web server NON fosse in grado di gestire due istanze di processi diversi provenienti dallo stesso browser. non pensavo esistesse questa limitazione [o forse c'è qualche barbatrucco da impostare nell'IIS]...

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    138
    Originariamente inviato da pietro09
    forse può servire

    http://forum.html.it/forum/showthrea...67#post9650867
    grazie.
    in effetti mi ero accorto che l'argomento 'progress bar' fosse un po' .... come dire... chi tocca rimane scottato.
    ho dovuto sbatterci contro anch'io.
    se e quando migrerò con .net vedrò di capire se e come la cosa è fattibile....

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da zenofonte
    grazie.
    in effetti mi ero accorto che l'argomento 'progress bar' fosse un po' .... come dire... chi tocca rimane scottato.
    ho dovuto sbatterci contro anch'io.
    se e quando migrerò con .net vedrò di capire se e come la cosa è fattibile....
    sinceramente non so se in asp si possano lanciare thread asincroni: ma resta il fatto che sono cose che non si usano tutti i giorni e non so proprio se ne vada la pena di dannarsi l'anima.
    Per esempio, io l'ho usato SOLO UNA VOLTA IN TANTI ANNI e solo perchè mi interessava provare la tecnica (manipolare un database con una procedura asincrona lunga molti minuti)

    Nelle pagine server normali, semplici o complesse, mai sentita la necessità di queste procedure ... particolari. Ciao
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.