Visualizzazione risultati 1 fino 25 di 25

Discussione: php e ajax problema chat

  1. #1
    Guest

    Predefinito php e ajax problema chat

    Salve a tutti...
    sto creando una chat il problema che devo aggiornare i messaggi e non ci sto riuscendo...
    i messaggi li prendo da un file php che li prende a sua volta dal db....
    Codice PHP:
    <?php include("message.php"); ?>

    sto cercando di provare con ajax ma non ci sto riuscendo...
    sapete darmi qualche suggerimento su come aggiornare la chat...

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Prova con (ad esempio):

    Codice HTML:
    $.ajax({ url: "message.php", type: "POST",data="azione=aggiorna", success: function(testo){
            document.getElementById('#id_chat').innerHTML += '<p>'+testo+'</p>';
          }});
    Ciao!
    Ultima modifica di alemoppo : 10-04-2010 alle ore 22.03.45

  3. #3
    Guest

    Predefinito

    non funziona....
    non cambia niente...

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    come hai provato? Cosa non cambia? Cosa resituisce message.php ??

  5. #5
    Guest

    Predefinito

    il codice che mi hai dato lo messo ma non cambia niente...
    il div non si aggiorna...
    message.php
    mi stampa i messaggi come html

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Hai cambiato l' #id_chat ?

    prova così:
    Codice HTML:
    $.ajax({ url: "message.php", type: "POST",data="azione=aggiorna", success: function(testo){
            document.getElementById('#id_chat').innerHTML = testo;
          }});
    EDIT: prova semmai ad inserrire qualche alert() in modo da vedere cosa non va...

    EDIT2: prova anche a vedere se realmente richiama il message.php (fagli ad esempio creare un file o cose simili...)
    Ultima modifica di alemoppo : 10-04-2010 alle ore 23.44.41

  7. #7
    Guest

    Predefinito

    non funziona ho cambiato id e messo un alert ma non funziona lo stesso....

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    hai un link di esempio?

  9. #9
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Prova con (ad esempio):

    Codice HTML:
    $.ajax({ url: "message.php", type: "POST",data="azione=aggiorna", success: function(testo){
            document.getElementById('#id_chat').innerHTML += '<p>'+testo+'</p>';
          }});
    Ciao!
    Sarà stato un errore di distrazione di alemoppo!
    Codice:
    data="azione=aggiorna"
    al posto di = ci vanno i :
    Codice:
    data: "azione=aggiorna"

  10. #10
    Guest

    Predefinito

    $.ajax({ url: "message.php", type: "POST",data: "azione=aggiorna", success: function(testo){
    document.getElementById('discussione').innerHTML += '<p>'+testo+'</p>';
    }});
    ma per richiamare questa parte di codice come posso fare....

  11. #11
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    jQuery...

  12. #12
    Guest

    Predefinito

    io ho provato con ajax...
    cosi...
    var Ajax = null;
    var NickName = "<?php echo $_COOKIE['nickname']; ?>";


    function HttpAjax(){
    var xmlHttp;
    try{
    //Firefox, Opera e Safari
    xmlHttp=new XMLHttpRequest();
    }
    catch(exc){
    //Internet Explorer
    try{
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(exc){
    try{
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(exc){
    alert("Il tuo Browser non supporta AJAX.");
    return false;
    }}}
    return xmlHttp;
    }

    function Ricevi(){
    var Ajax = HttpAjax();
    link = "message.php";
    Ajax.open("GET",link,true);
    var Discussione = document.getElementById('discussione');
    if(Ajax.readyState == 4 && Ajax.status == 200){
    Discussione.innerHTML = Ajax.responseText;//Prendo i dati e li stampo nel div
    }else{
    Discussione.innerHTML = '<center><img src="img/loading.gif" alt="Attendere"><br>Elaborazione dati in corso...</center>';
    }}
    pero non so come richiamare la funzione ogni 10 secondi...

  13. #13
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Devi usare setInterval
    Codice:
    setInterval('ricevi()', 10000);
    Secondo me, con jQuery sarebbe stato più facile.

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    immagino che la funzione da richiamare sia ricevi()....

    allora fai così:
    Codice HTML:
    function Ricevi(){
    var Ajax = HttpAjax();
    link = "message.php";
    Ajax.open("GET",link,true);
    var Discussione = document.getElementById('discussione');
    if(Ajax.readyState == 4 && Ajax.status == 200){
    Discussione.innerHTML = Ajax.responseText;//Prendo i dati e li stampo nel div
    }else{
    Discussione.innerHTML = '<center><img src="img/loading.gif" alt="Attendere"><br>Elaborazione dati in corso...</center>';
    }
    setTimeout("ricevi()",10000);
    }
    (mi scuso per l'errore sopra)

    Ciao!

  15. #15
    Guest

    Predefinito

    Codice PHP:
    //Variabili
    var Ajax = null;
    var NickName = "<?php echo $_COOKIE['nickname']; ?>";


    function HttpAjax(){
    var xmlHttp;
    try{
    //Firefox, Opera e Safari
    xmlHttp=new XMLHttpRequest();
    }
    catch(exc){
    //Internet Explorer
    try{
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(exc){
    try{
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(exc){
    alert("Il tuo Browser non supporta AJAX.");
    return false;
    }}}
    return xmlHttp;
    }

    function Ricevi(){
    var Ajax = HttpAjax();
    link = "message.php";
    Ajax.open("GET",link,true);
    var Discussione = document.getElementById('discussione');
    if(Ajax.readyState == 4 && Ajax.status == 200){
    Discussione.innerHTML = Ajax.responseText;//Prendo i dati e li stampo nel div
    }else{
    Discussione.innerHTML = '<center><img src="img/loading.gif" alt="Attendere"><br>Elaborazione dati in corso...</center>';
    }}
    setInterval("ricevi()", 1000);
    non sta funzionando...
    non si aggiorna...

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    ma il setTimeout lo devi mettere dentro la funzione!!

  17. #17
    Guest

    Predefinito

    ma se la metto dentro la funzione la devo chiamare la funzione...

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    eh si, ma solo la prima volta

    ad esempio con <body onload='Ricevi()'>

    no?

    Ciao!

  19. #19
    Guest

    Predefinito

    Ti spiego cosa devo fare....
    Vorrei che la chat si aggiornasse ogni 3 secondi...
    Durante la fase di caricamento prima del aggiornamento circa 2 secondi deve comparire questo:
    Codice PHP:
    Discussione.innerHTML = '<center><img src="img/loading.gif" alt="Attendere"><br>Elaborazione dati in corso...</center>';
    Sai come posso fare....

    Questo e il codice:
    Codice PHP:
    //Variabili
    var Ajax = null;
    var NickName = "<?php echo $_COOKIE['nickname']; ?>";


    function HttpAjax(){
    var xmlHttp;
    try{
    //Firefox, Opera e Safari
    xmlHttp=new XMLHttpRequest();
    }
    catch(exc){
    //Internet Explorer
    try{
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(exc){
    try{
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(exc){
    alert("Il tuo Browser non supporta AJAX.");
    return false;
    }}}
    return xmlHttp;
    }

    function Ricevi(){
    var Ajax = HttpAjax();
    link = "message.php";
    Ajax.open("GET",link,true);
    var Discussione = document.getElementById('discussione');
    if(Ajax.readyState == 4 && Ajax.status == 200){
    Discussione.innerHTML = Ajax.responseText;//Prendo i dati e li stampo nel div
    }else{
    Discussione.innerHTML = '<center><img src="img/loading.gif" alt="Attendere"><br>Elaborazione dati in corso...</center>';
    }}

  20. #20
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    mmmh allora io lo modificherei in questo modo:
    Codice HTML:
    function Ricevi(){
    var Ajax = HttpAjax();
    link = "message.php";
    Ajax.open("GET",link,true);
    var Discussione = document.getElementById('discussione');
    Discussione.innerHTML = '<center><img src="img/loading.gif" alt="Attendere"><br>Elaborazione dati in corso...</center>';
    if(Ajax.readyState == 4 && Ajax.status == 200){
    Discussione.innerHTML = Ajax.responseText;//Prendo i dati e li stampo nel div
    }
    setTimeout("Ricevi()",3000);
    }
    Comunque una domanda: "link" è una parola riservata in javascript (resitituisce, naturalmente, un link .... non sono sicuro che si possa usare anche come variabile...). Sicuro che vada bene? altrimenti prova questo*:

    Codice HTML:
    function Ricevi(){
    var Ajax = HttpAjax();
    url = "message.php";
    Ajax.open("GET",url,true);
    var Discussione = document.getElementById('discussione');
    Discussione.innerHTML = '<center><img src="img/loading.gif" alt="Attendere"><br>Elaborazione dati in corso...</center>';
    if(Ajax.readyState == 4 && Ajax.status == 200){
    Discussione.innerHTML = Ajax.responseText;//Prendo i dati e li stampo nel div
    }
    setTimeout("Ricevi()",3000);
    }
    *ho sostituito soltanto al posto di "link" "url"

    p.s. il tag <center> è deprecato!
    Ciao!

    EDIT:

    Comunque, una mia opinione personale sarebbe quella di non aggiornare ogni volta con "Elaborazione dati in corso...", ma fare una cosa del tipo:
    Codice HTML:
    <div id='discussione'>Elaborazione dati in corso...</div>
    <script>
    function Ricevi()
    {
         var Ajax = HttpAjax();
         url = "message.php";
         Ajax.open("GET",url,true);
         if(Ajax.readyState == 4 && Ajax.status == 200)
         {
              document.getElementById('discussione').innerHTML = Ajax.responseText;//Prendo i dati e li stampo nel div
         }
         setTimeout("ricevi()",3000);
    }
    </script>
    Ultima modifica di alemoppo : 12-04-2010 alle ore 17.23.52

  21. #21
    Guest

    Predefinito

    non fa niente mi dice che ce un errore forse qui...
    Discussione.innerHTML = '<img src="img/loading.gif" alt="Attendere"><br>Elaborazione dati in corso...';
    Discussione is null

  22. #22
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Se Discussione è null, non andrai a risolvere il problema lì ma dove inizializzi la variabile:
    Codice:
    var Discussione = document.getElementById('discussione');
    Forse un elemento con id uguale a discussione non esiste nella pagina.

  23. #23
    Guest

    Predefinito

    esiste l'id...
    ^^

  24. #24
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ma non hai una pagina di esempio?
    Come ha scritto sopra alemoppo prova così:
    Codice HTML:
    <div id='discussione'>Elaborazione dati in corso...</div>
    <script type="text/javascript">
    /* <![CDATA[ */
    function Ricevi()
    {
         var Ajax = HttpAjax();
         url = "message.php";
         Ajax.open("GET",url,true);
         if(Ajax.readyState == 4 && Ajax.status == 200)
         {
              document.getElementById('discussione').innerHTML = Ajax.responseText;//Prendo i dati e li stampo nel div
         }
         setTimeout("Ricevi()",3000); // le funzioni case sensitive
    }
    
    Ricevi();
    /* ]]> */
    </script>
    Richiami direttamente Ricevi(), visto che ormai il div è stato caricato senza utilizzare <body onload="...">

  25. #25
    Guest

    Predefinito

    non funziona lo stesso....

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •