Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313

    barra di caricamento con numero che indica lo stato di avanzamento

    Salve a tutti, è da circa un mese che sto giocando con ajax e a dir la verità mi sto trovando alla grande, ora come si dice "la fame vien mangiando" ho l'esigenza di creare una barra di caricamento che indica lo stato di avanzamento della creazione di un file xls, sono migliaglia di righe e mi sono ritrovato a vedere come uno stupido il monitor mentre il server creava il mio file.

    ora mi chiedeve come posso sfruttare ajax e php per far si che un numero mi indichi a che stato sta la creazione del file ???

    Nel mio codice php ho due cicli foreach che compilano il file excel e pensavo di sfruttare loro per la creazione del mio file.

    Potreste darmi qualche dritta ???

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Il principio di base e come quello dello upload eseguire una chiamata ajax alla pagina che esegue l'operazione quest'ultima dovrà restuirti l'avanzamento della creazioe del xls
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Questo mi è chiaro, ma quali dati devo mandare e come ? cioè mi chiedo, da php mi faccio restiture prima il numero di record totali tramite
    codice:
    echo json_encode($numero_totale_record);
    e poi un numero progressivo ?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non so dirti come sviluppare il php non sono molto bravo con questo linguaggio, inoltre non compete a questo forum, al limite fai spostare la discussione (segnala ad un moderatore) sul forum php
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Io per fare una cosa analoga sfrutto un database SQL di appoggio, in cui c'è un campo contatore, che viene aggiornato ogni x cicli (inutile caricare TUTTE le righe, non lo vedrà mai nessuno) mentre php scrive, mentre una seconda pagina php si occupa di renderizzare il contatore leggendo di volta in volta il contatore dadatabase.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Grazie, ottima soluzione :-D ma questo quanto influirebbe alivello di tempo ????

  7. #7
    Ecco, questo dipende da quanto è il numero di righe. Se lo sai a priori, fai che X di cui sopra sia int (numero righe)/(50).
    se tu fai una lettura sul contatore che si refresha ogni secondo (tempo ragionevole, se è solo testo) via ajax-php, direi che l'incidenza è bassa. se vuoi molto più "realtime" allora influisce (e pesantemente). Per X superiore a 10-15 non dovrebbe risentirne molto. per X >> 50 non te ne accorgi nemmeno.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    sto mettendo in pratica il tuo consigli, ma nel fare questa cosa mi sta sorgendo un bel dubbio....

    Quando eseguo la mia funzione, per prima cosa avvia una chiamata ajax verso php che fa la mia elaborazione, allo stesso tepo il codice php aggiorna un contatore nel mio db, fin qui tutto ok, dopo aver fatto ciò viene il bello, avvio una seconda chiamata ajax che controlla il contenuto del mio contatore e da lì dovrei far vedere cosa succede...

    E' giusto il mio modo di procedere ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Nuovo enigma :-( non riesco a modificare una variabile globale da ajax :-( come mai ? cosa sto trascurando ?
    codice:
    var global="15";
    function last_id(){
    
        var url="my_url_to_php_file";
        var obj;
         $.ajax({
            url:url,
            type:"POST",
            data:{},success:function(result){            
              obj = jQuery.parseJSON(result);
              global = "12";
             
            }
         });
    }
    
    
    
    $('#bottone').click(function(){
       last_id();
       alert(global);
    });
    lo so che il codice non ha senso, ma sono passato alle verifiche basi per capire cos'è che non va, in effetti riportarmi un id nella variabile globale, ma non capisco perchè se faccio questa operazione in success:function(result){} non funziona, se però da lì lancio un alert, mi fa vedere che ha letto il mio id :-( di che si tratta ????

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Stai effettuando una chiamata asincrona, le istruzioni non vengono eseguite in modo sequenziale. Nel tuo caso viene eseguito prima l'alert che sta nel click e poi la funzione "success" (che viene richiamata quando il server ha terminato l'elaborazione).

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.