Ajax qui ne fonctionne pas
Résolu
Mephistole
Messages postés
55
Date d'inscription
Statut
Membre
Dernière intervention
-
Mephistole Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Mephistole Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise Ajax pour qu'une personne ne puisse être inscrite sur mon site que si l'adresse mail qu'elle donne n'est pas encore dans la base de donnée.
Voici mon contrôleur :
Voici mon script JS :
Voici mon modèle :
EDIT : Correction des balises de code ( Ajout du langage afin d'avoir la coloration syntaxique ! ) (jordane)
Mon script JS n'a pas l'air d'être chargé puisque que je lui ajoute le code suivant :
J'utilise Ajax pour qu'une personne ne puisse être inscrite sur mon site que si l'adresse mail qu'elle donne n'est pas encore dans la base de donnée.
Voici mon contrôleur :
if (isset($_POST['checkMail'])) {
session_start();
include_once '../models/dataBase.php';
include_once '../models/user.php';
$mailUnique = new user();
$mailUnique->mail = strip_tags($_POST['checkMail']);
$checkMail = $mailUnique->checkMailUnique();
if ($checkMail !== false) {
if ($checkMail == 1) {
$_SESSION['formError'] = true;
}
echo json_encode($checkMail);
}
}
Voici mon script JS :
$('#errorCheckMailUnique').css('display', 'none');
function checkMailUnique() {
$.post(de donnée ou non
'../../controllers/addUser-Controller.php',
{
checkMail: $('#mail').val()
},
// On récupère les résultats du controller
function (checkMailResult) {
// Si on retrouve une addresse mail dans la base de donnée, alors on affiche un message d'erreur
if (checkMailResult === 1) {
$('#errorCheckMailUnique').css('display', 'block');
$('#submitRegistrer').attr('disabled', 'disabled');
alert('1');
} else if (checkMailResult === 0) {
$('#errorCheckMailUnique').css('display', 'none');
$('#submitRegistrer').removeAttr('disabled', 'disabled');
alert('2');
}
},
'JSON'
);
};
Voici mon modèle :
public function checkMailUnique() {
$queryCheckMail = 'SELECT COUNT(`mail`) AS countMail '
. 'FROM `'.self::prefix.'user`'
. 'WHERE `mail` = :mail';
$checkMailUnique = $this->db->prepare($queryCheckMail); PDO:: est une constante
$checkMailUnique->bindValue(':mail', $this->mail, PDO::PARAM_STR);
if ($checkMailUnique->execute()) {
$checkMailUniqueResult = $checkMailUnique->fetch(PDO::FETCH_OBJ);
return $checkMailUniqueResult->countMail;
} else {
return false;
}
}
EDIT : Correction des balises de code ( Ajout du langage afin d'avoir la coloration syntaxique ! ) (jordane)
Mon script JS n'a pas l'air d'être chargé puisque que je lui ajoute le code suivant :
$('button').css('background-color', 'red'); cette ligne de code ne fonctionne pas. Alors que cette même ligne dans un autre script JS fonctionne. Pourtant j'ai bien ajouté <script src="assets/js/checkMailUnique.js" type="text/javascript"></script>dans la balise <head>
1 réponse
-
Bonjour,
Lorsque l'on fait du Javascript (et ou ajax) il faut toujours commencer par regarder dans la CONSOLE du navigateur si il n'y a pas des erreurs.
(pour l'ajax, penser à activer l'option sur certains navigateurs comme chrome (xhr) )
( personnellement, pour débuguer, je préfère utiliser firefox... )
Quoi qu'il en soit, une de tes lignes de code me parait étrange.....$.post(de donnée ou non '../../controllers/addUser-Controller.php', {
PS: A l'avenir, merci de préciser le LANGAGE dans les balises de code afin d'avoir la coloration syntaxique et l'indentation du code (j'ai édité ton message pour les y mettre).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code