Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389

    Script aggiornamento div in automatico,se riclicco gli aggiornamenti si sommano

    ho uno script che mi aggiorna un div ogni tot secondi


    però quando riclicco sul menu e quindi ricarico quel determinato div, gli aggiornamenti si sommano quindi se clicco 10 volte di seguito allo scadere dei 10 sec avrò 10 aggiornamenti uno dopo l'altro......non capisco perchè


    codice:
     <script type="text/javascript"> 
    function loadPage(){
    	JQ("#monitor").load("pagina.php?"+new Date().getTime());
    }
    
    setInterval(loadPage,10000);
    
    
    </script>

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    non ne sono sicuro ma è come se facesse un'append potresti provare a svuotare #monitor




    codice:
     
    <script type="text/javascript">  
    function loadPage(){ 
        
        
        $("#monitor").attr("innerHTML", "");
    	
        JQ("#monitor").load("pagina.php?"+new Date().getTime()); 
    } 
    setInterval(loadPage,10000);   
    </script>

  3. #3
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389
    ho provato ma continua a sommare gli aggiornamenti, se ci clicco tante volte mi si impalla anche il pc

  4. #4
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389
    sto notando anche se non clicco si vanno via via sommando impallandomi il pc......come si può risolvere?

    questo non è un aggiornamento ma un appen proprio come dice longilineo

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    per ridurre l'impallamento ti consiglio di gestire meglio gli intervalli con clearInterval, magari differenziando lo scatenarsi della funzione per il click sul pulsante da quello dovuto alla routine degli intervalli.

    per capirci

    var actualinterval = null;

    $("#mybutton").click(
    loadpage("click");
    );


    loadpage(evento){
    if(evento=='click')clearInterval(actualevent);
    $("#monitor").attr("innerHTML", "");
    $.load....
    actualevent = setInterval(loadpage, 'intervalloscaduto', 10000);
    }

    Se non termini l'interval e chiami la funzione cliccando sul pulsante partono più funzioni in contemporanea, non ne sono sicurissimo, così come non sono sicuro sulla sintassi di alcune delle cose che ho scritto, e che mi pare che se alla funzione devi passare parametri serve setTimeout(al posto di setInterval) che vuole clearTimeout(al posto di clearInterval).

    Altro motivo del malfunzionamento consiste nell'asincronicità di .load, evitabile in ajax con async:false.

    Altra precisazione non conosco .load, ho sempre usato $.ajax.

    Vedi un pò se riesci a risolvere con le mie info poco precise... buona fortuna.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    La funzione load effettua un aggiornamento del contenuto del selettore indicato. Lo script postato (che è stato preso da un altra discussione e l'ho scritto proprio io) effettua un aggiornamento del div indicato ogni tot secondi. Non bisogna cliccare da nessuna parte per far partire lo script, viene eseguito automaticamente. Se associato anche ad un click allora potrebbe dare problemi. Scusate ma ci sono nmila siti che usano la funzione load per ricaricare il contenuto di un div per esempio questo a cui ho dato una mano proprio io in una discussione di pochi giorni fa. Al click sul menu in alto viene aggiornato il contenuto del div centrale utilizzando la funzione load di jquery. Ora come vedete non effettua nessun append.

    codice:
    Altro motivo del malfunzionamento consiste nell'asincronicità di .load, evitabile in ajax con async:false.
    Per completezza phone avrebbe dovuto linkare la discussione precedente, che spiega perche gli ho suggerito di utilizzare la funzione load.
    Se utilizza ajax di jquery o qualunque altra funzione che effettua una semplice chiamata ajax incapperà nuovamente nello stesso identico errore perche dovra utilizzare ancora innerHTML per riempire il div. La funzione load si occupa di recuperare anche gli script che stanno all'interno della pagina che si vuole caricare all'interno del div... rendendo appunto questi script validi anche se inclusi nella pagina dopo il caricamento. Per verificare la cosa basta avere firebug e si vedra che la funzione load effettuerà tante chiamate get quanti sono i file js che sono inclusi piu una per la pagina che si vuole caricare. Viene caricato anche tutto il contenuto js che sta all'interno della pagina ma non funzionerà se caricato all'onload(tutto quello che sta all'interno della funzione ready se si parla di jquery) della pagina. Questo perche appunto la pagina non è stata caricata ma inclusa.
    Spero di essere stato chiaro

  7. #7
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389
    Originariamente inviato da longilineo
    per ridurre l'impallamento ti consiglio di gestire meglio gli intervalli con clearInterval, magari differenziando lo scatenarsi della funzione per il click sul pulsante da quello dovuto alla routine degli intervalli.

    per capirci

    var actualinterval = null;

    $("#mybutton").click(
    loadpage("click");
    );


    loadpage(evento){
    if(evento=='click')clearInterval(actualevent);
    $("#monitor").attr("innerHTML", "");
    $.load....
    actualevent = setInterval(loadpage, 'intervalloscaduto', 10000);
    }

    Se non termini l'interval e chiami la funzione cliccando sul pulsante partono più funzioni in contemporanea, non ne sono sicurissimo, così come non sono sicuro sulla sintassi di alcune delle cose che ho scritto, e che mi pare che se alla funzione devi passare parametri serve setTimeout(al posto di setInterval) che vuole clearTimeout(al posto di clearInterval).

    Altro motivo del malfunzionamento consiste nell'asincronicità di .load, evitabile in ajax con async:false.

    Altra precisazione non conosco .load, ho sempre usato $.ajax.

    Vedi un pò se riesci a risolvere con le mie info poco precise... buona fortuna.

    lo script è pieno di errori e non essendo io molto pratico di javascript non li so correggere

  8. #8
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389
    non so se ho frainteso io vidav ma a me il problema non è caricare una pagina in un div, ma semplicemente aggiornarla ogni tot secondi....

    è purtroppo devo anche associarla a un menu....
    ti riassumo i vari codici che sto usando(grazie anche a te)

    allora questo lo uso per caricare altre pagine su un div
    codice:
     
    
    
    // <!CDATA[
    
        function caricaBox(string, IdBox) {
            var url_action = string;
    
            new Ajax.Request(url_action, { onComplete: showResponse });
            function showResponse(originalRequest) {
                var t = originalRequest.responseText;
                t = execJS(t);
                $(IdBox).innerHTML = t;
            }
            return false;
        }
    
        function execJS(t) {
            var p1 = 0, p2 = 0, p3 = 0, p4 = 0;
            p1 = t.indexOf("<" + "script", 0);
            if (p1 == -1) return t;
    
            p2 = t.indexOf(">", p1 + 7) + 1;
            p3 = t.indexOf("<" + "/script>", p2);
            p4 = p3 + 9;
    
            var c = t.substring(p2, p3);
            var s = document.createElement("script");
            s.type = "text/javascript";
            s.text = c;
            document.getElementsByTagName("head")[0].appendChild(s);
    
            t = t.substring(0, p1) + t.substr(p4);
            return execJS(t);
    
        }
    // ]]>

    per aggiornare una pagina ogni tot secondi

    codice:
     <script type="text/javascript"> 
    function loadPage(){
    	JQ("#monitor").attr("innerHTML", "");
    
    	JQ("#monitor").load("blocchi/home/ultimi_prodotti.php?"+new Date().getTime());
    }
    
    setInterval(loadPage,1000);
    
    
    </script>


    cosa si possono aggiustare questi script?

  9. #9
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389
    qualche consiglio?

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Il consiglio che posso darti è utilizza una e solo una delle 2 funzioni, è inutile mischiare le cose e probabilmente i problemi che ti da sono proprio per questo motivo.
    Per il resto la strada da seguire te l'abbiamo detta, ora devi cercare di proseguire da solo, purtroppo il problema non è circoscritto e riguarda varie parti di codice della tua pagina credo sia impossibile risolvere qui nel forum.

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.