Ajax qui ne fonctionne pas

Résolu/Fermé
Mephistole Messages postés 55 Date d'inscription lundi 28 mars 2016 Statut Membre Dernière intervention 20 avril 2020 - Modifié le 26 juin 2018 à 11:56
Mephistole Messages postés 55 Date d'inscription lundi 28 mars 2016 Statut Membre Dernière intervention 20 avril 2020 - 18 juil. 2018 à 11:11
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>

1 réponse

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
26 juin 2018 à 11:59
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

0
Mephistole Messages postés 55 Date d'inscription lundi 28 mars 2016 Statut Membre Dernière intervention 20 avril 2020 1
18 juil. 2018 à 11:10
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.
0
Mephistole Messages postés 55 Date d'inscription lundi 28 mars 2016 Statut Membre Dernière intervention 20 avril 2020 1
18 juil. 2018 à 11:11
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.
0