Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Array da file di testo, con lettura temporizzata senza refresh

    Ciao a tutti, sono nuovo del forum e mi scuso in anticipo per eventuali "sviste".

    Ho sviluppato in Php una pagina che con un refresh (in javascript) va a leggere un file di testo ogni 15 sec., Il contenuto del testo va a popolare un array da cui estraggo le variabili che mi servono.
    Fin qui tutto bene ma, se fosse possibile, vorrei evitare il refresh totale per evitare che tutto si resetti. Ho visto che è possibile fare un refresh con ajax che aggiorni un div ma quello che mi serve è poter lavorare con delle variabili, non la semplice visualizzazione del risultato, e non so proprio come ottenerle. Inutile poi che vi dica che di ajax so zero. Chiedo agli esperti: si può fare? Eventualmente una dritta sarebbe utilissima, giusto per non impazzire inutilmente.
    Grazie in anticipo.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,669
    Ciao è benvenuto, sì, si può fare e, come hai detto tu, si fa con AJAX.

    Utilizzi o hai la possibilità di utilizzare jQuery?
    In tal caso una semplice soluzione può essere la funzione get(), non è altro che una forma sintetica di una chiamata AJAX proprio per ottenere dati dal server.

    Vedi se riesci a combinare qualcosa; in caso contrario, fornisci maggiori dettagli.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    L'array che vai a popolare è in js o php?

    Perché nel primo caso quello che chiedi è fattibilissimo, mentre nel secondo (che credo sia il tuo caso) non è possibile senza il refresh della pagina.

  4. #4
    Grazie per le risposte KilleWorm e M4V1, stavo cercando di capire la funzione get() ma per rispondere a M4V1, sì è in php.
    Sostanzialmente vado a leggere il file Info.dat e colloco il risultato in un array:
    codice:
    $testo = file("Info.dat");
    $testo[0];
    $testo[1];
    $testo[2];
    $testo[3];
    
    
    
    $1 = str_replace( "1=", "",trim($testo[1]));
    $3 = str_replace( "3=", "",trim($testo[3]));
    devo quindi lasciar perdere?

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,669
    Si può comunque fare con AJAX, ma devi valutare tu come intendi procedere.
    Puoi impostare una chiamata AJAX che legga direttamente il tuo file .dat quindi creare il parsing in JavaScript, similmente a come fai col PHP.
    Oppure puoi impostare una chiamata AJAX che legga la tua pagina PHP la quale dovrà restituire dei dati in un formato "digeribile" da JavaScript; in genere un testo (stringa) che può avere una struttura JSON o XML o CSV o semplicemente delle coppie nome-valore a seconda dei dati che devi passare.

    In entrambi i casi, al "success" della chiamata AJAX, riceverai tali dati che userai come meglio credi dentro la pagina.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Oppure puoi impostare una chiamata AJAX che legga la tua pagina PHP la quale dovrà restituire dei dati in un formato "digeribile" da JavaScript; in genere un testo (stringa) che può avere una struttura JSON o XML o CSV o semplicemente delle coppie nome-valore a seconda dei dati che devi passare.
    In entrambi i casi, al "success" della chiamata AJAX, riceverai tali dati che userai come meglio credi dentro la pagina.
    La teoria è chiara e ho scelto la seconda possibilità ma, a parte includere il risultato in un div, continuo a non capire come fare e sono esattamente al punto di partenza, a quello che facevo già. Non conosco la sintassi, non so niente di Ajax, sto leggendo in rete ma la vedo dura.

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,669
    Ok però non hai risposto alla mia domanda iniziale (o quantomeno non mi è chiaro), usi o puoi usare jQuery?
    Sai eventualmente come includere tale libreria nella tua pagina?

    Questo sarebbe già un passo in avanti perché con jQuery (al contrario del puro JavaScript) la cosa diventa un po' più semplice da sviluppare e, di conseguenza, da spiegare.

    Fai sapere.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Ops scusami...
    si posso usare jQuery, ho scaricato e incluso
    codice:
    <script src="script/jquery-3.3.1.min.js"></script>
    credo basti... giusto?

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,669
    Sì, bene.

    A questo punto devi prima di tutto definire il tuo script PHP in modo che restituisca i dati in uno specifico formato. Tieni conto che si tratterà comunque di un'unica stringa, ma chiaramente i dati al suo interno possono avere una struttura organizzata.

    Bisognerà considerare comunque di che tipo di dati si tratta. Hai parlato di array, per cui sostanzialmente ti basterà passare una serie di valori separati ad esempio da un carattere che potrebbe essere una virgola (in tal caso parliamo convenzionalmente di un formato CSV). Dovrai comunque accertarti che il carattere usato come separatore non sia contenuto dentro gli eventuali valori che stai manipolando, altrimenti bisognerebbe adoperare ulteriori accorgimenti come racchiudere ogni dato tra apici o cose del genere.

    Fatto questo ti basterà effettuare la tua chiamata AJAX dove e quando vuoi, ad esempio dentro un eventuale setInterval se intendi eseguire la chiamata ogni tot secondi; vedi tu.

    Puoi usare la funzione $.ajax() impostando opportunamente la proprietà dataType per ricevere i dati in formato "text" (testo semplice), oppure usare get(), come già accennato, con una cosa del genere:
    codice:
    $.get( 'pagina.php', function( data ) {
       var arr = data.split(',');
    }, 'text');
    Nota che la variabile data conterrà il risultato della tua pagina PHP. Se hai deciso di impostare la serie di valori separati da virgola, ti basterà splittarli per ottenere l'array, come ho fatto in questo esempio.
    Ultima modifica di KillerWorm; 01-05-2018 a 01:01
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Innanzi tutto grazie KillerWorm per la gentilezza e la pazienza, con quelli a zero come me ce ne vuole.
    Allora, partiamo da quello che mi riesce (o almeno credo): nella pagina php ho scelto di stampare due variabili e come separatore un ";"
    echo $On1;
    echo ";";
    echo $On2;
    usando la funzione setInterval in div mi restituisce correttamente il dato es: pippo;pluto

    codice:
    <script src="script/jquery-3.3.1.min.js"></script><script>
    var auto_refresh = setInterval(
    function()
    {
    $('#dati').load('pagina.php');
    }, 3000);
    
    
    </script>
    
    
    <div id="dati"><div>
    e fino qui, mi dirai sai che sforzo, credo di esserci.

    Ora provo ad inserire il codice da te suggerito:
    codice:
    	<script>
    var auto_refresh = setInterval(
    function()
    {
    $.get( 'pagina.php', function( data ) {
    var arr = data.split(',');
    }, 'text');
    }, 3000);
    </script>
    E' corretto? Come faccio a far diventare quei dati una variabile php continuo a non capirlo.
    Buon primo maggio!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.