[AJAX] Refresh automatico non funziona

  • Creatore Discussione Creatore Discussione buburp
  • Data di inizio Data di inizio

buburp

Nuovo Utente
13 Mag 2014
10
0
0
Accedendo per la prima volta alla pagina http://www.buburp.com/ebay/indexb.htm con email pippo e password pluto, non compaiono le aste presenti e passate, tanto che ho dovuto mettere un pulsante apposito (premendo la prima volta appaiono le presenti, premendo la seconda volta appaiono le passate).
Le ho tentate tutte per evitare quel pulsante, da location.reload() ad una querystring tipo
indexb.htm?1, ma niente.
Come si risolve la cosa?
Grazie.
 
Ciao, penso che dovresti richiamare la funzione al caricamento della pagina.
prova a d aggiungere questo nello script della head
Codice:
window.onload = function() {
        rinfresca();
    };
 
I nostri messaggi erano moderati. non me ne ero accorto :crying:
 
tutte le chiamate restituiscono questo output
Codice:
<script>
    location.href = "login.htm";
</script>
non capisco.
bisognerebbe vedere cosa fai nella pagina php
 
Non avevo fatto il login perchè non hai postato la pagina del login
una volta effettuato il login il debug restituisce diversi errori javascript
ti consiglio di installarti un plugin tipo firebug per firefox e risolvere glie errori che ti segnala
 
il problema potrebbe essere nelle sessionStorage che non sono settate quando la pagina viene caricata ma solamente un secondo dopo
Codice:
setInterval("rinfresca()",1000);
aggiornando la pagina lo script trova le storage e funziona correttamente
bisogna fare delle prove tipo richiamare la funzione nella head
Codice:
rinfresca()
anche se dubito che possa andare
Se non risolvi per stasera provo a fare qualche simulazione
 
Sì, esattamente. Viene caricata un secondo dopo, però viene caricata, per cui la tabella dovrebbe essere creata correttamente col suo numero di righe. E invece ...
 
"get" va bene come primo parametro di xhr.open? Potrebbe essere quello? Lo so che non ha senso una domanda del genere, ma ho esaurito le risposte.
 
fai un cotrollo if sulle storage prima di creare le tr con il ciclo for
Codice:
if(sessionStorage.astepastB) {
        for (j=0; j<sessionStorage.astepastB; j++) {
            k = 7*j+7*sessionStorage.astecorrB+3;
            document.write ('<tr>');
            document.write ('<td id="cella'+ k +'"></td>');
            document.write ('<td id="cella'+(k+1)+'" class="dx"></td>');
            document.write ('<td id="cella'+(k+2)+'" class="dx"></td>');
            document.write ('<td id="cella'+(k+3)+'" class="dx"></td>');
            document.write ('<td id="cella'+(k+4)+'" class="dx"></td>');
            document.write ('<td class="cen"><a href="" target="_self"><img src="visualizza.gif" width="14" height="14" title="Visualizza"></a></td>');
            document.write ('<td id="cella'+(k+6)+'" class="dx"></td>');
            document.write ('</tr>');
        }
    }
dovresti risolvere
 
Mi sono un attimo incasinato leggendo il codice, quindi me lo rileggo con più calma dopo
nel frattempo vorrei mostrarti una soluzione più semplice da gestire:
meno javascript e più php
crei la tabella con un ciclo php ( immagino che prendi i dati da un database) e tramite ajax la aggiorni nella pagina html
HTML:
<!DOCTYPE HTML>
<html>
    <head>
        <script>  
            window.onload = function() {
                rinfresca()
                setInterval("rinfresca()",1000);
            }
            function rinfresca() {
                xhr = new XMLHttpRequest();
                xhr.open("get","refreshb.php");
                xhr.onreadystatechange = function() {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        document.getElementById("tabelle").innerHTML = xhr.responseText;                        
                    }
                }
                xhr.send();
            }
        </script>
    </head>
    <body>
        <div id="tabelle">

        </div>
    </body>
</html>
nella pagina php recuperi i dati e crei la tabella
PHP:
<?php
$row = array(
    "Paperino,1,BASE,33.00,33.00,30,3:01:43,16,16,6",
    "Willy,16.00,16.00,35,13 Mag 2014,15,560.00",
    "BASE,18.50,18.50,35,8 Mag 2014,7,647.50",
    "Wlad,23.50,40.50,34,7 Mag 2014,6,1377.00",
    "Willy,20.00,32.50,20,27 Apr 2014,5,650.00",
    "Willy,20.00,25.00,35,26 Apr 2014,2,875.00",
    "Wlad,23.00,30.00,35,26 Apr 2014,1,1050.00,5159.50"
);
?>
<table>
    <tr>
        <th>Offerente</th> 	
        <th>Apertura</th>        
        <th>Corrente</th> 	
        <th>Sacchi</th> 	
        <th>Termine</th> 	
        <th>Vis</th> 	
        <th>Mod</th> 	
        <th>Canc</th>
    </tr>
    <?php
    foreach ($row as $value) {
        $td = explode(",", $value);
        echo "<tr>";
        foreach ($td as $v) {
            echo "<td>" . $v . "</td>";
        }
        echo "</tr>";
    }
    ?>
</table>
 
La soluzione che avevo postato poco fa non va. Provo la tua. Anch'io avevo pensato a "più PHP e meno JS". Domani ti do risposta. Ora esco. Grazie di tutto e scusami per la perdita di tempo.
 
Ultima modifica:

Discussioni simili