problemi di validazione asincronizzazione dati

paperinik4

Utente Attivo
29 Mag 2011
1.812
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

E' da poco che sto cercando di capire come funzionano le chiamate ajax ma con ben pochi risultati:E spongo subito il mio problema. Dovrei fare un modulo di registrazione che fa la verifica dei dati in contemporanea mentre inserisci username, email e password. Ora io ho questo esempio di inizio preso da internet nelle mie varie ricerche. però da qui non so andare avanti. I file dovrebbero essere tre principalmente:

1) Modulo html d'iscrizione;

2) connetti.php (che si riferisce alla chiamata del db)

3) Modulo chiamata ajax (checkdati.php)

Iniziamo a postare l'esempio che ho sopratuttto capire se è giusto o meno:


Questo che posto è il modulo di iscrizione.php

PHP:
<html>
<head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
 
</head>
    <script type="text/javascript">
        function validateForm(){
                        //RECUPERO DEI PARAMETRI
            $('#loader').show();
            $('#invia').attr('disabled',true);
           
        var nome=$('#nome').val();
            var cognome=$('#cognome').val();
            var email=$('#email').val();
            var username=$('#username').val();
                        
        //ESECUZIONE DELLA CHIAMATA AJAX
            $.ajax(
                {
                    type: 'POST',
                    url: 'checkdati.php',
                    data: {nome_p:nome, cognome_p:cognome, email_p:email,username_p:username},
                    success: function(data){
                                        //SE CI SONO ERRORI MOSTRO L'ERRORE ALTRIMENTI UN MESSAGGIO DI CONFERMA
                        if(data.error==1){
                            alert(data.message);
                        }else{
                            alert("Registrazione ok");
                        }
                        $('#loader').hide();
                        $('#invia').attr('disabled',false);
                    },
                    complete: function(data){},
                    failure: function(data){
                        alert("Errore nella chiamata ajax");
                        $('#loader').hide();
                        $('#invia').attr('disabled',false);
                    }
            });
        }
 
    </script>
</head>
<body>
    <div align ="center">
    <h2>Esempio form di registrazione</h2>
    </div>
    <form action="" method="post">
        
        <div class="row">
            <p><p>
            <label>Nome: <input name="nome" id="nome" type="text"/> </label>
        </div> </p></p>
        <div class="row">
            <p><p>
            <label>Cognome: <input type="text" name="cognome" id="cognome"/></label>
        </div> </p></p>
        <div class="row">
            <p><p>
            <label>Email: <input type="text" name="email" id="email"/></label>
        </div> </p></p>
        <div class="row">
            <p><p>
            <label>Username: <input type="text" name="username" id="username"/></label>
        </div> </p></p>
        <div class="row">
            <label></label>
            <input type="button" onclick="validateForm(); return false;" value="Invia"  name="invia" id="invia"/>
            <img src="130.png" id="loader" style="display:none" />
        </div>
    </form>
</head>  
<body>  
    
       
        <?php
        require_once("connetti.php");

        ?>
    </body>
</html>
Ora il mio problema è il segu7ente nel file chiamato checkdati.php, cosa ci debbo inserire ???? Considerando che poi deve andare tutto in un db. Attualmente il db contiene solo nome & cognome per semplificare l'esempio, ma ovviamente lo posso ampliare aggiungtendo username, password ri-password, email. ri-emeail.

Spero in iun vostro aiuto e chiarimenti. Mi sono impantanato da secoli su qeusto argomento :(

P.S.: Se ho sbagliato sessione, cercavo la sessione ajax ma non l'ho trovata. Perdoatemi
 

alessandro1997

Utente Attivo
6 Ott 2009
5.303
1
0
22
Roma
alessandro1997.netsons.org
Leggendo il codice Javascript che esegue la validazione direi che il file PHP, in caso di errore, deve restituire una risposta JSON simile a questa:
Codice:
{
    "error": 1,
    "message": "Messaggio di errore..."
}
Mentre in caso non ci siano errori:
Codice:
{
    "error": 0
}
Per generare il JSON puoi usare la funzione PHP json_encode.
 

paperinik4

Utente Attivo
29 Mag 2011
1.812
0
36
Roma
www.ricetteagogo.it
Problemi su problemi con ajax non capisco dove sta l'errore

Salve a tutti,

Ritorno alla carica. Vorrei capire dove sbaglio nell'effetuare gli esempi trovati su internet per fare una chiamata ajax e avere la sincronizzazione (validazione) dei dati in diretta. Rporto di seguito due esempi: il primo l'ho preso via internet il secondo mi è è stato passato. credo che manchi in entrambi i listati qualcosa. moi potreste dare una mano per favore ??? il primo listato lo so l'ho postato qualche giorno fa ma non ho capito se esatto o meno e vorrei una conefrma. Comunque lo riposto anche per gli altri:

iscrizione.php

PHP:
<html>
<head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
 
</head>
    <script type="text/javascript">
        function validateForm(){
                        //RECUPERO DEI PARAMETRI
            $('#loader').show();
            $('#invia').attr('disabled',true);
           
        var nome=$('#nome').val();
            var cognome=$('#cognome').val();
            var email=$('#email').val();
            var username=$('#username').val();
                        
        //ESECUZIONE DELLA CHIAMATA AJAX
            $.ajax(
                {
                    type: 'POST',
                    url: 'checkdati.php',
                    data: {nome_p:nome, cognome_p:cognome, email_p:email,username_p:username},
                    success: function(data){
                                        //SE CI SONO ERRORI MOSTRO L'ERRORE ALTRIMENTI UN MESSAGGIO DI CONFERMA
                        if(data.error==1){
                            alert(data.message);
                        }else{
                            alert("Registrazione ok");
                        }
                        $('#loader').hide();
                        $('#invia').attr('disabled',false);
                    },
                    complete: function(data){},
                    failure: function(data){
                        alert("Errore nella chiamata ajax");
                        $('#loader').hide();
                        $('#invia').attr('disabled',false);
                    }
            });
        }
 
    </script>
</head>
<body>
    <div align ="center">
    <h2>Esempio form di registrazione</h2>
    </div>
    <form action="" method="post">
        
        <div class="row">
            <p><p>
            <label>Nome: <input name="nome" id="nome" type="text"/> </label>
        </div> </p></p>
        <div class="row">
            <p><p>
            <label>Cognome: <input type="text" name="cognome" id="cognome"/></label>
        </div> </p></p>
        <div class="row">
            <p><p>
            <label>Email: <input type="text" name="email" id="email"/></label>
        </div> </p></p>
        <div class="row">
            <p><p>
            <label>Username: <input type="text" name="username" id="username"/></label>
        </div> </p></p>
        <div class="row">
            <label></label>
            <input type="button" onclick="validateForm(); return false;" value="Invia"  name="iInvia" id="invia"/>
            <img src="130.png" id="loader" style="display:none" />
        </div>
    </form>
</head>  
<body>  
    
       
        <?php
        require_once("connetti.php");

        ?>
    </body>
</html>
checkdati.php

PHP:
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>CheckDati</title>
    </head>
    <body>

        <?php
                require_once("connetti.php");

if(isset($_POST['username']) ){

#se esistono variabili posto con sto nome allora faccio come segue: $query_controllo = "SELECT username FROM utenti WHERE username = '$username'";

$controllo_esistenza = mysql_num_rows(mysql_query($query_controllo));

#se controllo_esistenza darà come valore un numero maggiore di zero #vorrà dire che sono presenti alcuni record nel database, con lo stesso valore che hai scritto nel campo input

if($controllo_esistenza > 0)
    { 
    echo "Mi dispiace questo utente già esiste"; 
    
    } else{ echo "Questo username che hai scelto è perfetto!"; 
    
    }

} 

?>
    </body>
</html>
Il checkdati.php dovrebbe servire per la verifica dei campi immessi. Spero che qualcuno mi aiuto e mi spieghi più nel dettaglio. Ho visto anche dei libri su ajax e jquery ma sono spiegati malissimo e saltano dei passaggi. Grazie a tutti.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.303
1
0
22
Roma
alessandro1997.netsons.org
Come ho già detto, non puoi inviare i dati nel formato che ti pare, perché Javascript, nel fare il parsing della risposta restituita dal tuo script, richiede che siano in JSON e con una struttura ben precisa.

Il codice per il controllo è corretto, ma devi togliere tutto l'HTML e usare la funzione json_encode per restituire una risposta JSON. Inoltre, devi inviare l'header Content-Type (che dev'essere application/json). Guarda qui se non ti è chiaro: http://stackoverflow.com/a/7294846/705588.
 

paperinik4

Utente Attivo
29 Mag 2011
1.812
0
36
Roma
www.ricetteagogo.it
ciao

Ciao Alex,

Gli avevo dato un'occhiatina veloce ma era pronto in tavola. Domani ci do un'occhiata più profonda, spero di non avere difficoltà. Ti farò comunque sapere.