Visualizzazione dei risultati da 1 a 5 su 5

Discussione: a volte non funziona

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254

    a volte non funziona

    Buongiorno,
    forse è un problema comune,
    premetto che uso ajax da poco e sonomolto convinto di sbagliare qualche dettaglio tecnico.

    Per semplicita posto un codice minimo:
    pagina_da_leggere.php
    Codice PHP:
    IF($_POST[numero]!=''){
             
    $numero=$_POST[numero];
    }ELSE{
             
    $numero=1;
    }
    echo 
    "Numero: ".$numero;
    $succ=$numero+1;
    echo 
    "<a href=\"javascript:void(0);\" onclick=\"cambia('$numero');\">";
    echo 
    " + ";
    echo 
    "</a>"
    codice:
    function InviaDati(data){
      req = assegnaXMLHttpRequest();//funzione che assegna l'oggetto presa da html.it
      req.open('POST', "pagina_da_leggere.php", true);
      req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      req.send(data);
      req.onreadystatechange = function(){
           if (req.readyState == 4){
                 if (req.status == 200){
                       eval("gestisci_ritorno(req.responseText)");
                  }else{
    	      alert(req.status+" "+req.responseText);
                  }
            }
        };
    }
    
    
    function cambia(numero){
        var dati="numero="+numero;
        InviaDati(dati);
    }
    gestisci_ritorno(testo){
        document.getElementById('elemento').innerHTML=testo
    }
    Il tutto funziona, magari nel riscriverlo in modo minimo può esserci qualche errore, ma non è quello il punto.
    il problema è che dopo alcuni click non funziona. E non riesco proprio a capire perchè
    Le alternative sono due: 1) sbaglio a gestire l'oggetto/l'invio/il ritorno del testo. 2) C'è una funzione definita ed eseguita ad intervalli di un secondo che esegue delle operazioni in ajax. E' possibile che interferisca con queso script. Se è necessario spiego meglio nel dettaglio.
    Grazie Angelo

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova cosi:
    codice:
    function InviaDati(data){
      req = assegnaXMLHttpRequest();//funzione che assegna l'oggetto presa da html.it
      req.open('POST', "pagina_da_leggere.php", true);
      req.send(data);
      req.onreadystatechange = function(){
           if (req.readyState == 4){
                 if (req.status == 200){
                       document.getElementById('elemento').innerHTML=req.responseText
                  }else{
    	      alert(req.status+" "+req.responseText);
                  }
            }
        };
    }
    php:
    codice:
    IF($_POST[numero]!=''){ 
             $numero=$_POST[numero]; 
    }ELSE{ 
             $numero=1; 
    } 
    echo "Numero: ".$numero; 
    $succ=$numero+1; 
    echo "<a href=\"#\" onclick=\"InviaDati('numero=".$numero."');\">"; 
    echo " + "; 
    echo "</a>";
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Grazie caro,
    però il problema non è questo.
    Ho isolato il codice dal contesto e funziona sempre. Ovvero non si blocca dopo 6 - 7 click.
    Quindi mi viene da pensare che l'altra funzione interferisca con questa.
    Ripetendo che è da poco che uso ajax devo commettere qualche errore nella gestione delle chiamate:
    Io ho una funzione definita in un
    codice:
    setInterval('count_down('...',1000);
    Questa funzione ogni secondo interroga il database e fa dei controlli.
    Quindi ogni secondo faccio una richesta ajax.
    Ora quello che penso è che questa funzione interferisca con qualsiasi altra chiamata ajax?
    E' possibile?Si possono gestire contemporaneamente una chiamata al secondo ed altre ad evento?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Io ti sconsiglio di usare eval "deprecato" al limite prova usando return gestisci_ritorno(req.responseText)
    nella chamata ajax e setRequestHeader e alcuni browser non digerisce, una chiama ogni secondo mi sembra eccessiva e da quando ne so io non puoi fare chiamate multiple in ajax ma a cascata.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    mi spiace interrompere ma con un titolo cosi' generico si chiude

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.