Visualizzazione risultati 1 fino 10 di 10

Discussione: chiamata ajax a pagina php

  1. #1
    Guest

    Predefinito chiamata ajax a pagina php

    Salve, ho un form (con method post, puntante alla stessa pagina, ovvero i codici lato server stanno nella stessa pagina) con un input text di nome "messaggio" e dovrei far in modo che quando un utente lascia quella pagina eseguisse una chiamata ajax dove praticamente viene inviato un dato al form (nell' input text è come se dovesse scrivere "Utente uscito"), quindi avevo provato a scrivere questi codici:

    Codice PHP:
    <script type="text/javascript">
    <!--
    //
    function bye() {
    ajax.open("post", "shout.php", true);
    ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    ajax.send("messaggio=utente uscito.");
    }
    //-->
    </script>
    e l' ho richiamato in questo modo:
    Codice HTML:
    <body onUnload="bye();">
    Ovviamente la pagina in questione è shout.php, il problema è che non viene eseguita questa chiamata. Come mai? I codici del form sono i seguenti:

    Codice PHP:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    Messaggio:&nbsp;&nbsp;<input type="text" name="messaggio" style="width: 400px" maxlength="250"><input type="submit" value="Invia" name="invia"></form>
    e nel php prelevo il contenuto di "messaggio" così:

    Codice PHP:
    $messaggio = htmlspecialchars($_POST['messaggio']);

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Non puoi effettuare una richiesta HTTP quando il documento viene scaricato, tutto il documento con gli oggetti Javascript inclusi stanno per venire eliminati e la richiesta verrà essa stessa eliminata. Potresti provare ad effettuare una richiesta sincrona e usare l'evento onbeforeunload ma dubito che cambi qualcosa.
    Inoltre ti ricordo che devi effettuare un controllo anche lato server per eliminare gli utenti che non si connettono più da tempo.

  3. #3
    Guest

    Predefinito

    Ho provato anche con unbeforeunload ma non cambia nulla.. Cosa intendi per "gli utenti che non si connettono più da tempo" ? Questa pagina è visibile solo a chi è loggato (quindi la sessione chiamata 'username' è attiva)..

    Comunque come posso risolvere il problema?

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Anche se il metodo che stai provando funzionasse, non puoi avere la certezza che la richiesta HTTP venga effettuata, pensa per esempio che il browser potrebbe chiudersi improvvisamente, la connessione potrebbe mancare, etc.
    Sul server devi effettuare dei controlli sui tempi per verificare se un determinato utente è inattivo.

  5. #5
    Guest

    Predefinito

    Anche se il metodo che stai provando funzionasse
    Il problema è proprio questo. A me non interessa che sia perfetto, quindi come dicevi gestendo errori imprevisti come la chiusura anomala del browser, ma basta che funzioni, mentre è ciò che non fa.

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Hai anche provato ad effettuare la richiesta in modo sincrono?

  7. #7
    Guest

    Predefinito

    Ehm mi sono appena buttato in questo campo (ajax), come faccio a farla in modo sincrono?

  8. #8
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Cambia il terzo parametro della chiamata al metodo open da true a false.

  9. #9
    Guest

    Predefinito

    Nada.. :S

  10. #10
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Allora non è proprio possibile. La soluzione è quella che ti ho già indicato.

Regole di scrittura

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