set Custom Validity : Validation de formulaire asynchrone avec AJAX (JavaScript ou JQuery) et PHP
Le fichier PHP : check-email-available.php
Ce code nous permet de savoir si l'adresse email est disponible. Si l'email est dans la liste, il n'est pas disponible.
<?php
//La liste devrait être remplie avec les emails de la base de données
$email_list = array("test@gmail.com", "test@yahoo.com", "test@outlook.com");
if (isset($_POST["email"])) {
$email = $_POST["email"];
// Si l'email est dans la liste, il n'est pas disponible
echo in_array($email, $email_list) ? "L'email n'est pas disponible" : "";
}
AJAX JavaScript : XMLHttpRequest
Un appel asynchrone avec JavaScript en utilisant l'objet XMLHttpRequest
On utilise la méthode setCustomValidity pour afficher le message de validation du champ du formulaire.
//Avec XMLHttpRequest
function checkEmail(element) {
var xhttp = new XMLHttpRequest();
var url = "check-email-available.php";
var parameters = "email=" + element.value;
//methode POST
xhttp.open("POST", url, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.onreadystatechange = function() {
//Si aucune erreur HTTP
if (xhttp.readyState == 4 && xhttp.status == 200) {
//On montre le message retourné par le code PHP
element.setCustomValidity(xhttp.responseText);
}
}
xhttp.send(parameters);
}
AJAX avec JQuery
//Avec JQuery
function checkEmailJQuery(element) {
$.post("check-email-available.php", {
email: element.value
})
.done(function(response) {
//On montre le message retourné par le code PHP
element.setCustomValidity(response);
});
}
Code complet
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
</head>
<body>
<form action="">
<!-- Modifier la fonction à appeler -->
<input name="email" onchange="checkEmail(this)"></input>
<button>OK</button>
</form>
<script>
//Avec XMLHttpRequest
function checkEmail(element) {
var xhttp = new XMLHttpRequest();
var url = "check-email-available.php";
var parameters = "email=" + element.value;
//methode POST
xhttp.open("POST", url, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.onreadystatechange = function () {
//Si aucune erreur HTTP
if (xhttp.readyState == 4 && xhttp.status == 200) {
//On montre le message retourné par le code PHP
element.setCustomValidity(xhttp.responseText);
}
}
xhttp.send(parameters);
}
//Avec JQuery
function checkEmailJQuery(element) {
$.post("check-email-available.php", { email: element.value })
.done(function (response) {
//On montre le message retourné par le code PHP
element.setCustomValidity(response);
});
}
</script>
</body>
</html>
Commentaires
Enregistrer un commentaire