web-dev-qa-db-fra.com

Comment puis-je vérifier si un email existe via un jupery keyup ()?

J'ai configuré une fonction de délai jQuery keyup pour vérifier le courrier électronique saisi dans un champ de saisie.

Cela fonctionne bien après avoir testé avec une alert('Key pressed!');

Mais je veux qu'il dise, par exemple, 'Oui, cet email est associé à un utilisateur' OR 'Désolé, cet email ne se trouve pas dans notre base de données' sans avoir soumis de demande de page.

 var delay = (function () {
 var timer = 0; 
 fonction de retour (rappel, ms) {
 clearTimeout (timer); 
 minuterie = setTimeout (rappel, ms); 
}; 
}) (); 
 $ ('entrée'). keyup (function () {
 delay (function () {
 // vérifier que le courrier électronique existe et que le résultat en sortie 
 // Puis-je utiliser PHP ici? 
 // Puis-je utiliser ajax/json ? 
}, 500); 
}); 
 

J'ai essayé de vérifier avec php mais cela est rendu avant le jQuery bien sûr, c'est là que je stocke mon email var.

Après quelques recherches sur Google, il semble que cela ne soit plus possible. Quelqu'un peut-il confirmer ou proposer une solution?

Merci

1
zilj

J'utiliserais une requête AJAX à un script PHP qui effectue la recherche, ce qui pourrait ressembler à ceci du côté de jQuery une fois le document prêt:

// jquery
$('#email-input').live('change', function() {
    //ajax request
    $.ajax({
        url: "email_check.php",
        data: {
            'email' : $('#email-input').val()
        },
        dataType: 'json',
        success: function(data) {
            if(data.result) {
                alert('Email exists!');
            }
            else {
                alert('Email doesnt!');
            }
        },
        error: function(data){
            //error
        }
    });
});

Avec l'exemple ci-dessus, votre PHP devra renvoyer les données json une fois que la vérification de l'email effectuée en fonction de l'adresse sera effectuée. Par exemple, votre email_check.php contiendra:

// get email passed via AJAX
$email = $_GET['email'];

// do check
if ( email_exists($email) ) {
    $response->result = true;
}
else {
    $response->result = false;
}

// echo json
echo json_encode($response);

J'espère que cela pourra aider!

2
Mateusz Michalik