Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543

    controllo form: esistenza di un campo prima di inviare i dati - Ajax o jQuery?

    Buon giorno,
    sto ultimando un sistema di iscrizione utente e uno dei passaggi chiave che vorrei realizzare è quello di controllare - prima ancora dell'invio dei dati - l'esistenza o meno di alcuni dati nel Database (mysql).
    Ad esempio se l'utente che si iscrive sceglie un username che già esiste vorrei che gli uscisse un messaggio affianco al campo "username" prima ancora che esso completi il form per intero.
    Ovviamente ho già messo un controllo che fa questa cosa, ma solo dopo aver inviato il form dati.
    Due precisazione:
    1) l'applicazione è in php+MySql;
    2) ho una lieve infarinatura di jQuery (ma molto lieve!!!); di ajax niente!

    Detto ciò: cosa è meglio usare? Ajax o jQuery?
    Avreste da consigliarmi un tutorial a riguardo?

    Grazie.
    "To iterate is human, to recurse, divine." (R.(Heller))

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    ehm, allora, due info prima: jQuery è una libreria di Javascript che implementa determinate funzionalità, che JS di suo non ha, garantendo anche che funzionino su tutti i browser che supporta. AJAX è una funzionalità, implementata tramite JS, che permette di lanciare una chiamata Asincrona sul server senza ricaricare la pagina, e di manipolare la risposta tramite JS.

    Ora, jQuery implementa già AJAX tra le sue funzionalità ( http://api.jquery.com/category/ajax/ ).

    Ora che sai questo, devi implementare in PHP una pagina che, preso un username come parametro POST, controlla se esiste un utente con quell'username (chiami il file check.username.php) e stampando "true" se non esiste un utente con l'username passato, "false" altrimenti (anche se l'username non è valido, come null, "" o simili).

    In JS, devi applicare all'evento onblur dell'input una funzione che lancia la chiamata AJAX sul file passandogli il value dell'input come parametro. All'evento onSuccess effettui un eval della risposta ed agisci di conseguenza, es:

    codice:
    $('#UsenameField').blur(function(){
      $.ajax({
        url: 'scripts/get/check.username.php',
        type: 'post',
        data: 'username='+this.value
        success: function(data) {
          var result = eval(data); //result sarà true se data == "true", false se data =="false"
          if(result){
             //Controllo passato
          }
          else{
             //Controllo non passato
          }
        }
    });
    I DON'T Double Click!

  4. #4
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Originariamente inviato da artorius
    ehm, allora, due info prima: jQuery è una libreria di Javascript che implementa determinate funzionalità, che JS di suo non ha, garantendo anche che funzionino su tutti i browser che supporta. AJAX è una funzionalità, implementata tramite JS, che permette di lanciare una chiamata Asincrona sul server senza ricaricare la pagina, e di manipolare la risposta tramite JS.

    Ora, jQuery implementa già AJAX tra le sue funzionalità ( http://api.jquery.com/category/ajax/ ).

    Ora che sai questo, devi implementare in PHP una pagina che, preso un username come parametro POST, controlla se esiste un utente con quell'username (chiami il file check.username.php) e stampando "true" se non esiste un utente con l'username passato, "false" altrimenti (anche se l'username non è valido, come null, "" o simili).

    In JS, devi applicare all'evento onblur dell'input una funzione che lancia la chiamata AJAX sul file passandogli il value dell'input come parametro. All'evento onSuccess effettui un eval della risposta ed agisci di conseguenza, es:

    codice:
    $('#UsenameField').blur(function(){
      $.ajax({
        url: 'scripts/get/check.username.php',
        type: 'post',
        data: 'username='+this.value
        success: function(data) {
          var result = eval(data); //result sarà true se data == "true", false se data =="false"
          if(result){
             //Controllo passato
          }
          else{
             //Controllo non passato
          }
        }
    });
    Ciao,
    non sono molto pratico di JS.
    Potresti, per cortesia, farmi un esempio pratico?

    Io ho il mio form:
    codice:
    <form action="checkFields.php" method="post">
        
        <label for="username">
        <input type="text" name="username">
        
        <! -- pulsanti submit... -->
    </form>
    Come faccio a far apparire il classico quadratino rosso accanto al campo "username" col messaggio che l'utente scelto esiste O non è valido ?

    Grazie mille.

    @ fcaldera: darò un'occhiata anche ai tuoi links.
    "To iterate is human, to recurse, divine." (R.(Heller))

  5. #5
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Ho provateo a riguadarmi la funzione, ma non ho capito come integrarla e come realizzare quanto scritto nel post precedente.
    "To iterate is human, to recurse, divine." (R.(Heller))

  6. #6
    Originariamente inviato da the-bit
    codice:
    <form action="checkFields.php" method="post">
        
        <label for="username">
        <input type="text" name="username">
        
        <! -- pulsanti submit... -->
    </form>
    Come faccio a far apparire il classico quadratino rosso accanto al campo "username" col messaggio che l'utente scelto esiste O non è valido ?
    Mi sa che non hai molto chiaro cosa sia il for del label... non devi indicare il nome del campo, ma l'id del campo:

    codice:
    <form action="checkFields.php" method="post">
        
        <label for="UsenameField">
        <input type="text" name="username" id="UsenameField">
        
        <! -- pulsanti submit... -->
    </form>
    a questo punto basta che scrivi:
    codice:
    <script type="text/javascript">
    $(document).ready(function(){
       $('#UsenameField').blur(function(){
          $.ajax({
             url: 'scripts/get/check.username.php',
             type: 'post',
             data: 'username='+this.value
             success: function(data) {
                var result = eval(data); //result sarà true se data == "true", false se data =="false"
                if(result){
                   //Controllo passato
                   //Sotto questo commento devi mettere il codice per togliere il bordo rosso o quello che usi
                }
                else{
                   //Controllo non passato
                   //Sotto questo commento devi mettere il codice per aggiungere il bordo rosso o quello che usi
                }
             }
       });
    });
    </script>
    Chiaramente devi completare il codice con l'effetto da visualizzare.
    I DON'T Double Click!

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.