Visualizzazione dei risultati da 1 a 2 su 2

Hybrid View

  1. #1

    Uso corretto di reload e caricamento pagina

    Salve. Sto modificando un plug in di Joomla per realizzare una asta on-line.
    Il mio obiettivo è : allo scadere del timer, ricaricare la pagina. Per tale scopo utilizzo uno script scritto da me e una pagina php(premetto, ho sempre programmato in java e sono le prime volte che programmo in javascript)
    Per semplicità, la pagina php restituisce una stringa(non sono riuscito a passare un array dalla pagina php allo script):

    echo '' . $array_result[0] . ' , ' . $array_result[1];
    fino a qui tutto ok.
    Il mio script, ogni secondo(poco efficiente, ma non ho trovato soluzione diversa), verifica se l'asta è conclusa, facendo richiesta alla pagina php che accede al DB e compone la stringa.

    Lo script è questo(eliminando le cose non necessarie alla discussione):
    codice:
    
        setInterval(function( ) {
            var myRequest = null;
            function CreateXmlHttpReq(handler) {
                var xmlhttp = null;
                try {
                    xmlhttp = new XMLHttpRequest();
                } catch (e) {
                    try {
                        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                }
                xmlhttp.onreadystatechange = handler;
                return xmlhttp;
            }
    
    
            function myHandler() {
                if (myRequest.readyState == 4 && myRequest.status == 200) {
    
    
                    e = document.getElementById("test");
                    var str = myRequest.responseText;
                    var res = str.split(" , ");
                    carica = res.pop(0);
                    e.innerHTML = "" + res.pop(0); //MI SETTA IL PREZZO CORRENTE DELL'ASTA
                    e.innerHTML = "" + carica; //MI DICE SE DEVO CARICARE O MENO LA PAGINA
    
    
                    if(carica == 1){
                        location.reload();//PROBLEMA
                    }
                    
                }
            }
            var idAuction = '{/literal}{$auction->id}{literal}';
            myRequest = CreateXmlHttpReq(myHandler);
            myRequest.open("POST", "/joomla/components/com_bids/templates/default/prelievo.php?q=" + idAuction);
            myRequest.send(null);
        }, 1000);
    Il mio dubbio è: dopo location.reload(); (o window.location.reload(true) e tutti i metodi per ricaricare una pagina) che cosa accade allo script? continua l' esecuzione? Cioè, arriverà lo script a fare una nuova richiesta alla pagina php? location.reload() è bloccante?

    Dopo che viene lanciato il reload(lo vedo nella pagina che ricarica), "lo script dovrebbe" fare una richiesta alla pagina, nella quale il carica è settato a zero nel DB, e quindi trovarselo poi nello script.. questo non accade e non so se è lo script che rimane bloccato su reload o altro
    Ultima modifica di UoMoSoUnD; 27-10-2014 a 11:38

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, usi un setTimelimit() ogni tot tempo (nel tuo caso 1 secondo) rilanciando la funzione.

    Il fatto è che con un reload quando la chiamata ajax ha terminato e ritornato i dati. Se questa ci mette più di 1 secondo ovviamente non vedrai eseguire la myhandler() perchè come timepout hai 1 secondo(non farà in tempo).

    Se non ho capito male tu vuoi far si che ogni tot secondi venga eseguito myHandler() per aggiornare i dati?
    Se si dovresti impostare diversamente la cosa per non far ricaricare la pagina ma rieseguire solo myhandler() (così avrebbe senso l'utilizzo di ajax).
    Per quanto riguarda il passaggio dei dati/array puoi convertire da script php l'array in stringa json e riavere un array/object in JS.

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.