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

    [Ajax] Scrittura su div sbagliato!!! Forse query che si accavallano?

    Salve a tutti!
    Stavo testando una semplice pagina HTML composta da due div e da un javascript che utilizzando Ajax, tramite una funzione temporizzata ogni secondo aggiorna il contenuto dei due div (il contenuto è servito da una pagina php).

    Ora noto che quando metto "sotto sforzo" il sistema, molto spesso e volentieri il contenuto che dovrebbe andare ad esempio nel div "A" mi viene scritto nel div "B" senza nessun apparente motivo!

    N.B. Questa stranezza non si verifica se inserisco nello script delle funzioni di alert ad ogni refresh e si verifica un numero minore di volte se apro il socket in maniera sincrona...

    Sembra quasi che le query si "accavallino" l'una sull'altra.

    Potreste darmi qualche dritta?
    Grazie a tutti!
    What is the |\/|atrix?

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    usi ajax: ma questo è vago :master:

    Prova ad usare prototype: se con prototype funziona, è il tuo "ajax" che non va
    Pietro

  3. #3
    Hai ragione non mi ero spiegato bene!
    Il sistema che utilizzo è ahah (http://microformats.org/wiki/rest/ahah)
    What is the |\/|atrix?

  4. #4
    ancora questi problemi? ... quel codice non permette chiamate multiple ma una sola alla volta poichè la variabile è globale e ogni volta che usi quella funzione sovrascrivi l'onreadystatechange e il div scritto sarà sempre quello usato nell'ultimo onreadystatechange assegnato ... usa ABC se è la semplicità che cerchi
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Originariamente inviato da andr3a
    ancora questi problemi? ... quel codice non permette chiamate multiple ma una sola alla volta poichè la variabile è globale e ogni volta che usi quella funzione sovrascrivi l'onreadystatechange e il div scritto sarà sempre quello usato nell'ultimo onreadystatechange assegnato ... usa ABC se è la semplicità che cerchi
    Era proprio questa risposta che volevo io! Mi confermi le mie teorie!
    Non so come ringraziarti!!!

    Giusto per curiosità... la cosa non sono riuscito a capire è come fa a sovrascrivere l'onreadystatechange... nel loro esempio la variabile "req" non è dichiarata al di fuori della funzione....
    Non dovrebbe creare una nuova istanza ad ogni chiamata?

    Codice PHP:
    // qui non c'è var req = false;

    function ahah(url,target) {
        
    document.getElementById(target).innerHTML 'loading data...';
        if (
    window.XMLHttpRequest) {
            
    req = new XMLHttpRequest();
            
    req.onreadystatechange = function() {ahahDone(target);};
            
    req.open("GET"urltrue);
            
    req.send(null);
        } else if (
    window.ActiveXObject) {
            
    req = new ActiveXObject("Microsoft.XMLHTTP");
            if (
    req) {
                
    req.onreadystatechange = function() {ahahDone(target);};
                
    req.open("GET"urltrue);
                
    req.send();
            }
        }


    function 
    ahahDone(target) {
       
    // only if req is "loaded"
       
    if (req.readyState == 4) {
           
    // only if "OK"
           
    if (req.status == 200 || req.status == 304) {
               
    results req.responseText;
               
    document.getElementById(target).innerHTML results;
           } else {
               
    document.getElementById(target).innerHTML="ahah error:\n" +
                   
    req.statusText;
           }
       }
    }

    ahah("index.php","livello1"); 
    Grazie ancora per il tuo interessamento!!!
    What is the |\/|atrix?

  6. #6
    se non metti var davanti e' sempre globale (come window.req) ... un errore basilare ma ancora troppo spesso commesso ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Azz... questa non la sapevo!!!
    Quindi se non si dichiara la variabile con "var" davanti anche se la variabile è instanziata dentro una funzione, essa è sempre globale?

    quindi in teoria un work around dovrebbe essere questo giusto?
    Codice PHP:
    function ahah(url,target) {
        
    document.getElementById(target).innerHTML 'loading data...';
        if (
    window.XMLHttpRequest) {
            var 
    req = new XMLHttpRequest();
            
    req.onreadystatechange = function() {ahahDone(req,target);};
            
    req.open("GET"urltrue);
            
    req.send(null);
        } else if (
    window.ActiveXObject) {
            var 
    req = new ActiveXObject("Microsoft.XMLHTTP");
            if (
    req) {
                
    req.onreadystatechange = function() {ahahDone(req,target);};
                
    req.open("GET"urltrue);
                
    req.send();
            }
        }
    }

    function 
    ahahDone(req,target) {
       
    // only if req is "loaded"
       
    if (req.readyState == 4) {
           
    // only if "OK"
           
    if (req.status == 200 || req.status == 304) {
               
    results req.responseText;
               
    document.getElementById(target).innerHTML results;
           } else {
               
    document.getElementById(target).innerHTML="ahah error:\n" +
                   
    req.statusText;
           }
       }
    }

    ahah("index.php","livello1"); 
    Giusto per capire... che mi è venuto il dubbio!!!
    What is the |\/|atrix?

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    lascia perder ahah e guardati ABC (il signor Andrea ha lavorato di fino ed il codice non è esattamente banale )

    ps.
    L'unico punto a favore di ahah è che è un esempio perfetto di codice da non scrivere mai

    Pietro

  9. #9
    Originariamente inviato da pietro09
    lascia perder ahah e guardati ABC (il signor Andrea ha lavorato di fino ed il codice non è esattamente banale )

    ps.
    L'unico punto a favore di ahah è che è un esempio perfetto di codice da non scrivere mai

    Su questo sono d'accordo con te perchè hai totalmente ragione!!!
    Ho solo ripreso uno script vecchio e dopo che mi hai spiegato quelle cose stai tranquillo che non lo utilizzerò di certo!!!
    L'unica cosa è che volevo solo cercare di capire il funzionamento... per una mia conoscenza!
    Il "work around" che ho scritto prima potrebbe funzionare?

    Grazie ancora per il tuo interessamento!
    What is the |\/|atrix?

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    L'unica cosa è che volevo solo cercare di capire il funzionamento... per una mia conoscenza!
    Il "work around" che ho scritto prima potrebbe funzionare?
    :quote: Ma allora siamo daccordo Anch'io debbo vedermi abc di andr3a e studiarmelo un poco.


    Se mi chiedi se quello che hai scritto potrebbe funzionare (ma che vorrà dire work around :master: ), non guardo il codice, ma la firma del metodo:

    function ahah(url,target)

    il target non deve essere l'id di un div, ma una funzione di ritorno. Ciao
    Pietro

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.