Ajax qui ne fonctionne pas [Résolu/Fermé]

Signaler
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
-
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
-
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 :
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>
A voir également:

1 réponse

Messages postés
31214
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2021
3 217
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

Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
1
Merci de ta réponse :).

j'ai résolu le problème.

Il m'a semblé avoir précisé le langage dans les balise. J'ai sûrement fait une erreur de manipulation.
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
1
Merci de ta réponse :)
J'ai résolu le problème.

Il m'a semblé avoir précisé le langage dans les balises. J'ai sûrement fait une erreur de manipulation.