11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je voudrais utiliser Ajax pour un site web pour une association. Le but est qu'il empêche l'utilisateur d'ajouter un autre utilisateur (c'est la seule personne à pouvoir le faire) lorsque l'adresse mail existe déjà dans la base de donnée.
Mais le problème est qu'il ne fonctionne plus comme il le devrait. Et je n'arrive pas à voir d'où vient le problème.

Voici le script Javascript :

    $('#errorCheckMailUnique').css('display', 'none');
    function checkMailUnique() {
        $.post(
                '../../controllers/addUser-Controller.php',
                {
                    checkMail: $('#mail').val()
                },
                function (checkMailResult) {
                    if (checkMailResult == 1) {
                        $('#errorCheckMailUnique').css('display', 'block');
                        $('#submitRegistrer').attr('disabled', 'disabled');
                    } else if (checkMailResult == 0) {
                        $('#errorCheckMailUnique').css('display', 'none');
                        $('#submitRegistrer').removeAttr('disabled', 'disabled');
                    }
                },
                'JSON'
                )
    };


Voila le 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);
    }


Et le modèle est comme ça :

    public function checkMailUnique() {
        $queryCheckMail = 'SELECT COUNT(`mail`) AS countMail '
                          . 'FROM `'.self::prefix.'user`'
                          . 'WHERE `mail` = :mail';
        $checkMailUnique = $this->db->prepare($queryCheckMail);
        $checkMailUnique->bindValue(':mail', $this->mail, PDO::PARAM_STR);
        if ($checkMailUnique->execute()) {
            $checkMailUniqueResult = $checkMailUnique->fetch(PDO::FETCH_OBJ);
            return $checkMailUniqueResult->countMail;
        } else {
            return false;
        }
    }


Merci de vos réponses Smiley smile
Modifié par Arths (10 Jun 2018 - 09:47)
Salut,

Malheureusement nous n'avons pas assez d'informations pour comprendre là où ça coince...

Ton script arrive-t-il déjà à récupérer correctement ton fichier json ?
Affiche-t-il une quelconque erreur dans la réponse ?
Qu'essayes-tu d'envoyer de ton coté dans $_POST['checkMail'] ?

En outre, je ne comprends pas non plus vraiment ton soucis. Comment sais-tu que ça ne marche pas ? Il se passe rien ? Ou il ajoute quand même une adresse mail quand tu essayes de lui en fournir une déjà existante ? Donne plus de détails sur ce que tu essayes de nous exposer.

Et pour prendre de l'avance, fais déjà des essais avec des console.log() dans la partie "success" (ou échec) de ta fonction $.post(), ça te donnera probablement une piste.