Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59

    monitorare stato invio newsletter con ajax

    Ciao a tutti, ho creato un gestionale in php + mysql per la gestione di una newsletter.

    Ho la tabella degli utenti con i campi "stato" che è 1 o 0 a seconda che sia attivo o disattivato, ed il campo "inviata" che aggiorno ogni volta che invio la mail all'utente corrispondente. (All'inizio sono tutte zero, poi man mano che invio mi trovo 1)

    Quindi facendo delle select sullo stato so quante email devo inviare in tutto, e facendo la select sul campo "inviata" so a che punto sto.

    Ho creato uno scriptino php che fa appunto questo lavoro: si collega al database e mi dice quante email ho inviato (facendo la query sul campo "inviata").

    Nella pagina che provvede all'invio ho messo:

    Codice PHP:
    <script type="text/javascript" src="js/mootools.js"></script>
    <script language="javascript">
    var request = new Request({
        url: 'ajax_stato_invii.php',
        method: 'get',
        update: 'refresh-me',
        onComplete: function(response) {
            $('divid').set('html',response);
        }
    })

    var doRefresh = function() {
        request.send();
    };

    doRefresh.periodical(500);
    </script>


    <div id='divid'></div> 
    e a seguire il loop che provvede ad inviare tutte le mail.

    Il problema è che l'output della pagina avviene a newsletter inviata, quindi non ottengo neanche l'output ajax finchè le mail non sono tutte inviate.

    Se invece eseguo l'invio in una finestra e monitoro il tutto in un'altra, funziona perfettamente (incrementa il valore "inviate" man mano che va avanti).

    Come posso risolvere???

    Grazie! ;-)

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59
    ho usato questo metodo con jquery...

    Codice PHP:

    <html>
    <
    head>
    <
    title>Monitor Invio Newsletter</title>
    <
    script src="/js/jquery-1.2.6.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    <!--
    jQuery(function($) {
    $("#contentArea").load("test.php"); 
    });

    $().ajaxSend(function(r,s){
    $("#contentLoading").show();
    });

    $().ajaxStop(function(r,s){
    $("#contentLoading");
    });

    //-->
    </script>

    <script>
    var refreshId = setInterval(function()
    {
         $('#responsecontainer').load('ajax_stato_invii.php');
    }, 500);
    </script>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    <div id="contentLoading" class="contentLoading">

    <div id="responsecontainer"></div>   

    </div>

    </head>

    <body>

    <div id="contentArea">
    </div>
    </body>
    </html> 

    dove test.php è una pagina che mi fa semplicemente uno sleep di 4 secondi per simulare il tempo di caricamento pagina....(quindi la pagina effettiva da caricare), e ajax_stato_invii.php è la pagina che mi effettua la query mysql e mi ritorna il valore delle mail inviate fino a quel momento...

    tutto funziona alla perfezione con firefox (il div #responsecontainer si aggiorna e il risultato di ajax_stato_invii.php pure di conseguenza), ma IE carica il primo valore di ajax_stato_invii.php e poi non si aggiorna più, ridandomi poi in output solo il risulatato di test.php,...

    qualche consiglio?

    Grazie!

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    In IE il sistema accede alla cache per le richieste ajax... per evitarlo aggiungi un parametro fittizio variabile:

    $('#responsecontainer').load('ajax_stato_invii.php '+'?pippo='+Math.random());

    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

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59
    GRANDE! ci ero appena arrivato googlando per un'ora...ecco il codice modificato....

    Codice PHP:

    <script>
     $(
    document).ready(function() {
          $(
    "#responsecontainer").load("ajax_stato_invii.php");
       var 
    refreshId setInterval(function() {
          $(
    "#responsecontainer").load('ajax_stato_invii.php?randval='Math.random());
       }, 
    2500);
    });
    </script> 
    grazie mille! ;-)

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.