Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    41

    [JavaScript\Ajax] Eseguire porzione codice JavaScript ogni tot secondi

    Ciao a tutti,in una pagina Html (generata da Php) ho bisogno di richiamare una funzione JavaScritp(che utilizza Ajax per richiamare in modo asincrono il server) ogni 3 secondi, non riesco a trovare un modo per farlo, tutti i modi che ho trovato finiscono con il bloccare l'interazione della pagina durante l'attesa dello scadere dei 3 secondi.

    qualcuno riesce ad aiutarmi?

    grazie

  2. #2
    Ciao,
    solitamente per queste operazioni si usano le funzioni setInterval() o setTimeout().

    Cosa hai già provato a fare?

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Io farei così:

    All'apertura della sessione controllerei il numero di msg che hanno l'utente loggato come destinatario e lo segno in una variabile di sessione $Session[NumeroDiMsgInIngresso] , questa variabile di sessione ovviamente faccio in modo che venga aggiornata se l'utente in questione fa delle modifiche (per esempio cancella la posta), ogni TOT secondi lancio lo script AJAX (io ho sempre usato la setinterval()) che lancia una pagina php che interroga il database facendo un count e restituisce il valore :

    RisultatoDelCount - $Session[NumeroDiMsgInIngresso]
    e poi aggiorna
    $Session[NumeroDiMsgInIngresso] =RisultatoDelCount
    nella onreadystatechange farei tipo:

    codice:
     
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4){
                alert(xmlHttp.readyState);
                if(xmlHttp.status==200){
                   if(xmlHttp.responseText !="0") //penso che lo zero poi venga interpreato come stringa
                     alert("Hai "+ xmlHttp.responseText +" nuovi messaggi.");
                }
            }
        }
    Il problema è un pò diverso per i messaggi che ti arrivano quando non sei loggato, in questo caso dovresti mettere come attributo nella tabella messaggi un campo Read booleano e quindi semplicemente quando ti logghi fai il count degli elementi he hanno l'utente loggato come destinatario e il campo Read su falso (Questa soluzione è veloce ma poco pultia, l'utente potrebbe avere dei vecchi messaggi non letti), ovviamente in questo caso dovresti anche impostare correttamente il campo Read quando leggi il messaggio.. Per risolvere invece il problema dei vecchi messaggi non letti probabilmente invece c'è bisogno di gestire diversamente le sessioni magari con l'ausilio di un db ma diventa un pò più complicato...

    Ovviamente sono solo idee eh nulla di sicuramente funzionante e giusto

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.