Dubbio e Problema Refresh
- Questo topic ha 8 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 10 anni fa da Luca.
- AutorePost
- 31 Marzo 2014 alle 11:48 #5964LucaPartecipante
Il primo è un dubbio il secondo un problema.
Il Refresh quanto “consuma” su un Hosting e sulla fluidità del sito?
Ho un refresh di questo tipo:
var auto_refresh = setInterval( function () { $('#refresh').load(‘pagina.php’); $('#refresh2').load(‘#refresh2’); }, 5000);
Ora, a parte i secondi che imposto, che svantaggi posso avere?
Poi il problema, se io faccio .load(‘pagina.php’); perché al refresh perdo tutti eventi jquery precedenti tipo Tooltip, onclick, ecc. ecc.? E’ come se non li mantenesse.
Grazie ancora
1 Aprile 2014 alle 09:48 #5969jqueryitaliaAmministratoreNon credo sia un problema di “consumi” (che ovviamente sono relativi alla pagina di carichi), ma un problema di funzionalità: dipende dai motivi per i quali vuoi ricaricare ogni x secondi la pagina e se non c’è alcuna alternativa a questa metodologia.
Per quanto riguarda la “perdita” di eventi jQuery, questo è normale quando aggiungi elementi dinamicamente (come nel tuo caso) con chiamamte Ajax nel DOM.
Per questo motivo esistono le funzioni .live() per versioni jQuery minori uguali a 1.6 e .on() dalla versione jQuery 1.7+.8 Aprile 2014 alle 10:58 #5982LucaPartecipanteCiao, posso chiederti una cortesia? Ho letto alcuni manuali ma non sono riuscito ad applicar eil metodo .on() sul Refresh del div, uoi darmi qualche suggerimento?
9 Aprile 2014 alle 17:23 #5986jqueryitaliaAmministratoreDifficile darti una soluzione senza vedere il codice, Luca…
Riesci a rendermi visibile la pagina da qualche parte (senza postare tutto il codice nel forum) in modo che possa darci un’occhiata?11 Aprile 2014 alle 09:40 #6000LucaPartecipanteDunque ho una pagina php chiamata prova.php
<?php $ora = date(´H:i´); $query = mysqli_query($db, "SELECT ora FROM proviamo_tabella WHERE ora=´".$data."´") or die (mysqli_error($notifiche)); $pg=mysqli_fetch_array($query); if($ora==$pg[´ora´]){ $esito = ´1´; }else{ $esito = ´0´; } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Prova di Studio</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ var esi = <?php echo $esito;?>; if (esi ==´1´) { setTimeout(function() { //Funziona Javascript },1000); } }); </script> </head> <body> pagina bla bla </body> </html>
Se io faccio F5 per aggiornare la pagina la funziona funzione, scusate il gioco di parole, io vorrei che “var esi” abbia il valore aggiornato in tempo reale perchè la query funziona, restituisce 1 o 0 in tempo reale è javascript che non mi da il valore, solo quello.
Non so come spiegarlo, vorrei che appena mi cambia il record del DB e l´esito diventi 1 parta subito la parte javascript in modo che mostri l´animazione nella pagina.
11 Aprile 2014 alle 13:45 #6004jqueryitaliaAmministratoreBeh, è ovvio che funzioni solo al refresh visto che la variabile esito viene impostata con php all’inizio…
Per ottenere ciò che vuoi dovresti prima di tutto salvare il codice php in un nuovo file (ad esempio esito.php) cioè:
$ora = date( "H:i" ); $query = mysqli_query($db, "SELECT ora FROM proviamo_tabella WHERE ora='".$data."'") or die (mysqli_error($notifiche)); $pg = mysqli_fetch_array($query); $esito = ( $ora == $pg["ora"] ) ? 1 : 0; echo $esito;
poi nel file html, ad intervalli regolari, dovresti fare partire una chiamata ajax che richiamo il file esito.php che ti resituirà il valore di esito.
Supponendo che a te serva il valore ogni 5 secondi dovresti scrivere la funzione in questo modo:$( function() { setInterval( function() { $.ajax({ type: 'post', dataType: 'html', cache: false, async: true, url : 'esito.php', success: function( returnData ) { if ( returnData == 1 ) { // azione per esito = 1 } else { // azione per esito = 0 } }, error: function( jqXHR, textStatus, errorThrown ) { alert ( errorThrown +' '+ textStatus ); } }); }, 5000); });
ed a seconda dell’esito ottenuto eseguirai ciò che devi eseguire 😉
11 Aprile 2014 alle 14:19 #6007LucaPartecipantePerfetto, funziona. L’unico problema è che l’animazione di slideUp e Down la esegue sempre e non solo una volta.
Quindi quello che vorrei realizzare sarebbe una sorta di messaggio stile vecchio msn quando qualcuno si connette che si alza e dice Caio è entrato, ora come ora l’esito 1 e 0 funziona, mi dice anche caio o tizio, il problema di fondo adesso sta nel non fare ripetere l’animazione dopo la prima comparsa sullo stesso record del db.
Se già Caio me lo ha mostrato non eseguire più l’animazione.
11 Aprile 2014 alle 15:18 #6009jqueryitaliaAmministratoreTu non avevi mai parlato in precedenza di un’animazione… ;-P
Utilizzando un DB, personalmente integrerei una nuova colonna nel DB e creerei una nuova query estraendo solo i nominativi non ancora mostrati11 Aprile 2014 alle 15:22 #6010LucaPartecipanteLo so questo discorso è uscito dopo, perchè ho pensato di integrare dentro l’apertura animata del div in modo che si mostrasse.
Per mostrare l’utente che entra ho risolto, l’unico problema che mi resta è che l’animazione non fa solo un ciclo ma si ripete finchè l’ora non cambia, c’è qualche funzione jquery che dica esegui questa cosa solo una volta?
- AutorePost
- Devi essere connesso per rispondere a questo topic.