Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122

    Script che mette in attesa

    Veterani del client side buondì

    sto creando un software in PHP che, utilizzando cicli molto complicati, mette a dura prova la CPU del server [e questo è normale] con tempi di generazione mediamente lunghi che vanno da un minimo di 10 secondi fino anche a 170-180 secondi.

    Ho fatto un minimo di intefaccia grafica e con index ho un bel form che invia i dati alla pagina in questione.
    Siccome non voglio che la pagina si blocchi per così tanto tempo stavo pensando di creare un piccolo quadratino [stile + o - alert] al centro dello schermo che ti dice "Risoluzione in corso" che compare dalla pressione del submit e che permane fino alla completa generazione della pagina incriminata.

    E' possibile fare una cosa di questo genere?

    Grazie
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    la soluzione non è immediata. Quando invii un form dovrebbe inizare a caricarsi la pagina indicata nell'action quindi non puoi mettere messaggi sulla pagina del form.

    del resto, la pagina che carichi immagino faccia prima il lavoro lato server, quindi restituisce del codice (a lavoro terminato), quindi mostare a quel punto un avviso sarebbe troppo tardi

    il mio primo approccio sarebbe quella di aprire una popup all'evento onsubmit del form che visualizzi un messaggio... soluzione poco accessibile ma semplice.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Originariamente inviato da fcaldera
    la soluzione non è immediata. Quando invii un form dovrebbe inizare a caricarsi la pagina indicata nell'action quindi non puoi mettere messaggi sulla pagina del form.
    del resto, la pagina che carichi immagino faccia prima il lavoro lato server, quindi restituisce del codice (a lavoro terminato), quindi mostare a quel punto un avviso sarebbe troppo tardi
    il mio primo approccio sarebbe quella di aprire una popup all'evento onsubmit del form che visualizzi un messaggio... soluzione poco accessibile ma semplice.
    Grazie

    In alternativa posso fare una cosa di questo genere: poichè la prima pagina si blocca fino alla generazione della seconda pensavo di non fare un submit ma creare un button che si ricollega a una funzione.
    Questa funzione prima mi fa inviare i dati alla pagina incriminata e poi mi fa comparire l'avviso.
    Dovrebbe funzionare ugualmente
    Sarebbe una cosa fattibile come funzione?
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da Nix82
    ...poichè la prima pagina si blocca fino alla generazione della seconda...
    Credo di non aver capito questo passaggio :master:
    letta così io interpreto che

    - tu premi il tasto submit
    - la pagina lato client rimane ferma ma lato server fa quello che deve fare (in che modo poi? Ajax?)
    - a calcoli terminati la pagina in action viene caricata istantanemente

    é così oppure no?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    La pagina php deve per prima cosa inviare un div che contiene il messaggio d'attesa

    <html><body><div id="attesa">Attendere, prego...</div>

    e forzarne l'invio... in ASP sarebbe response.flush ma in PHP non so :master:

    quindi elaborare i dati, inviarli e accodare:

    <script>document.getElementById("attesa").style.di splay="none";</script></body></html>

    Non lo posso provare ma l'equivalente in ASP funziona

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Originariamente inviato da br1
    La pagina php deve per prima cosa inviare un div che contiene il messaggio d'attesa

    <html><body><div id="attesa">Attendere, prego...</div>

    e forzarne l'invio... in ASP sarebbe response.flush ma in PHP non so :master:

    quindi elaborare i dati, inviarli e accodare:

    <script>document.getElementById("attesa").style.di splay="none";</script></body></html>

    Non lo posso provare ma l'equivalente in ASP funziona

    ciao
    Ho provato una cosa del genere ma non mi viene! Se metto "Aspetta" all'inizio della pagina incriminata e prima di ogni script PHP la pagina si blocca lo stesso fino alla sua completa generazione ovvero alla risoluzione di tutti i cicli
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  7. #7
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Originariamente inviato da fcaldera
    Credo di non aver capito questo passaggio :master:
    letta così io interpreto che

    - tu premi il tasto submit
    - la pagina lato client rimane ferma ma lato server fa quello che deve fare (in che modo poi? Ajax?)
    - a calcoli terminati la pagina in action viene caricata istantanemente

    é così oppure no?
    Ti faccio un esempio
    Pagina 1 -> form
    Pagina 2-> quella lenta con tutti i cicli

    Ho il problema che pagina2 è lentissima a generarsi lato server e quindi vorrei mettere una scritta del tipo "Attendere prego" tra l'invio del form e la generazione della pagina e che duri per tutto il tempo di generazione di pagina2.

    Ho provato a mettere codice HTML in pagina2 prima di ogni codice PHP ma il risultato è uguale. Prima deve generarsi la pagina e poi mi visualizza tutto.

    Avevo pensato una cosa di questo tipo:
    al posto di un submit in pagina1 metto un button che richiama una funzione. Questa funzione fa 2 cose: prima mi invia i dati a pagina2 (e qui la pagina si blocca) poi mi fa uscire la scritta "Attendere prego".
    Naturalmente potrebbe anche essere l'incontrario [non sono io l'esperto di lato client ] ovvero prima mi fa uscire la scritta "Attendere prego" e poi mi invia i dati.

    E' fattibile una cosa del genere?

    Grazie
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Metti il div nella pagina di partenza, ovviamente nascosto e magari con posizionamento assoluto sovrapposto al centro della pagina, e sul button:

    onclick="document.getElementById("attesa").style.d isplay="block";document.nomeDelForm.submit();"

    Teoricamente dovrebbe funzionare... provalo

    Oppure fai una pagina intermedia sul server che acquisisce tutti i dati del form e li memorizza in variabili di sessione, quindi restituisce una pagina col messaggio d'attesa e lo script:

    <script>location.href="paginaCheElaboraRealmente.p hp";</script>

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Originariamente inviato da br1
    Metti il div nella pagina di partenza, ovviamente nascosto e magari con posizionamento assoluto sovrapposto al centro della pagina, e sul button:
    onclick="document.getElementById("attesa").style.d isplay="block";document.nomeDelForm.submit();"
    Teoricamente dovrebbe funzionare... provalo
    Oppure fai una pagina intermedia sul server che acquisisce tutti i dati del form e li memorizza in variabili di sessione, quindi restituisce una pagina col messaggio d'attesa e lo script:
    <script>location.href="paginaCheElaboraRealmente.p hp";</script>
    ciao
    ciao br grazie, scusa non ho capito una cosa
    allora in pagina1 metto il button al posto del submit a cui do questo codice javascript
    onclick="document.getElementById("attesa").style.d isplay="block";document.nomeDelForm.submit();"

    ma il <html><body><div id="attesa">Attendere, prego...</div> lo devo mettere nella pagina1 o nella pagina2 ?
    Perchè nel tuo primo post mi hai detto pagina2 adesso mi dici pagina1

    E poi mi va bene che posso con posizionamento assoluto ma se lo nascondo come facico dopo a visualizzarlo tramite javascript?

    Grazie
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  10. #10
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    piccolo UP
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

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.