Résolu Un problème avec TypeError

73V3N9!V3N

Membre
Inscription
19 Octobre 2018
Messages
23
Réactions
2
Points
1 394
    Réponse de 73V3N9!V3N Informatique Programmation Programmation web Questions, aides et recherches Résolu : Un problème avec TypeError
  • #1
Bonjour à tous,
Je viens vers vous, car j'ai un problème concernant une erreur Javascript.

Je m'explique..

Je possède une page inscription, une fois les champs remplis.. une conversion en JSON se fait et envoi ça vers ma page de vérification, lors de la vérification tout ce passe bien, aucun problème côté PHP.
Cependant, quand je clique sur le bouton pour valider l'inscription, une erreur dans la console s'affiche.

1590760205010.png


1590760618529.png


Le problème, c'est cette erreur qui empêche d'afficher les alertes par exemple (Le mot de passe est incorrect), les alertes sont elles aussi encodées en JSON.
Si quelqu'un d'entre-vous s'y connaît, ce serait vraiment sympa, car je bloque depuis plus de 2 heures, dessus malgré des recherches intensive sur le net..

Ci-dessous, les différents codes afin que la personne souhaitant m'aider arrive à se repérer.

Merci pour votre aide.

Petit bout du code javascript ou se localise le problème.
JavaScript:
.then((
    function(t){
        t.data.error?(
            e.loading=!1,
            e.$parent.flashError([
                {error:!0,message:t.data.message}
            ])
        ):
        (e.$store.commit("UPDATE_USER_DATA",t.data.user),
            e.$parent.flashError([
                {error:!1,message:"Bienvenue "+e.userData.username+", ton compte a bien été crée !"}
            ]),
            setTimeout((function(){
                e.$router.push("user")
            }),1500)
        )
    }
))
.catch((
    function(t){
        if(422===t.response.status){
            e.loading=!1;var n=[];
            Object.entries(t.response.data.errors).forEach((
                function(e){
                    document.getElementById(e[0]).setAttribute("style","border: 2px solid #d10000;"),
                    n.push({error:!0,message:e[1][0]})
                }
            )),
            e.$parent.flashError(n)
        }
    }
))
PHP:
<?php
require '../Global.php';
header('Access-Control-Allow-Origin: *');
header('Content-type: application/json');

if(!isset($_SESSION['id'])) {
    $json = file_get_contents('php://input');
    $data = json_decode($json);
    if(isset($data->username)) {
        $ThisPDO = $pdo->query('SELECT * FROM users WHERE username = ?', [$Server->Enrobe($data->username)]);
        if($ThisPDO->rowCount() == 0) {
            if(ctype_alnum($data->username)) {
                if(strlen($data->username) <= 15) {
                    $ThisPDO2 = $pdo->query('SELECT * FROM users WHERE mail = ?', [$Server->Enrobe($data->mail)]);
                    if($ThisPDO2->rowCount() == 0) {
                        if(filter_var($data->mail, FILTER_VALIDATE_EMAIL)) {
                            if(strlen($data->password) >= 6 AND strlen($data->password_confirmation) >= 6) {
                                if($data->password == $data->password_confirmation) {
                                    if($data->gender == "M" OR $data->gender == "F") {
                                        // INSERTION DU JOUEUR..
                                        $response = array('reponse' => true);
                                    } else {
                                        $response = array('errors' => ['gender' => 'Une erreur est survenue.']);
                                    }
                                } else {
                                    $response = array('errors' => ['password' => 'Les mots de passe ne correspondent pas.']);
                                }
                            } else {
                                $response = array('errors' => ['password' => 'Le mot de passe est trop court (6 caractères min.).']);
                            }
                        } else {
                            $response = array('errors' => ['mail' => 'Cette adresse e-mail est invalide.']);
                        }
                    } else {
                        $response = array('errors' => ['mail' => 'Cette adresse e-mail est déjà utilisée.']);
                    }
                } else {
                    $response = array('errors' => ['username' => 'Ce pseudo est trop long (15 caractères max.).']);
                }
            } else {
                $response = array('errors' => ['username' => 'Ce pseudo est invalide.']);
            }
        } else {
            $errors['username'] = ['Ce pseudo est déjà pris'];
            $response = array('errors' => $errors);
        }
    }
} else {
    $response = array('error' => 'Il semblerait que tu sois déjà connecté, actualise cette page.');
}
echo json_encode($response);
?>
 

WhiiTe'

Ancien staff RG
Inscription
22 Octobre 2011
Messages
14 245
Réactions
7 976
Points
22 675
    Réponse de WhiiTe' Informatique Programmation Programmation web Questions, aides et recherches Résolu : Un problème avec TypeError
  • #2
Le problème vient de cette condition :

JavaScript:
if(422===t.response.status){
    ///
Essaie de débuguer t.response car il semblerait qu'il ne possède pas de champ 'status' :mmh:
 

73V3N9!V3N

Membre
Inscription
19 Octobre 2018
Messages
23
Réactions
2
Points
1 394
    Réponse de 73V3N9!V3N Informatique Programmation Programmation web Questions, aides et recherches Résolu : Un problème avec TypeError
  • #3
Le problème vient de cette condition :

JavaScript:
if(422===t.response.status){
    ///
Essaie de débuguer t.response car il semblerait qu'il ne possède pas de champ 'status' :mmh:
Salut,
Comment ?

Au départ, je me disais que c'était de la faute de Pusher, j'obtenais une erreur 1006 qui signifie une déconnexion "brutale".
Est-ce que cette déconnexion ferait en sorte que status devienne vide, c'est ce que je me demande.
 

WhiiTe'

Ancien staff RG
Inscription
22 Octobre 2011
Messages
14 245
Réactions
7 976
Points
22 675
    Réponse de WhiiTe' Informatique Programmation Programmation web Questions, aides et recherches Résolu : Un problème avec TypeError
  • #4
Salut,
Comment ?

Au départ, je me disais que c'était de la faute de Pusher, j'obtenais une erreur 1006 qui signifie une déconnexion "brutale".
Est-ce que cette déconnexion ferait en sorte que status devienne vide, c'est ce que je me demande.
Je sais pas du tout j'ai jamais utilisé Pusher, et tu peux debug avec des console.log tout simplement, en fonction de ça déjà tu pourras voir ta réponse et te faire une idée
 

73V3N9!V3N

Membre
Inscription
19 Octobre 2018
Messages
23
Réactions
2
Points
1 394
    Réponse de 73V3N9!V3N Informatique Programmation Programmation web Questions, aides et recherches Résolu : Un problème avec TypeError
  • #5
Je sais pas du tout j'ai jamais utilisé Pusher, et tu peux debug avec des console.log tout simplement, en fonction de ça déjà tu pourras voir ta réponse et te faire une idée
Directement depuis la console Google, si oui, ça me retourne ça.
1590769755149.png
 

73V3N9!V3N

Membre
Inscription
19 Octobre 2018
Messages
23
Réactions
2
Points
1 394
    Réponse de 73V3N9!V3N Informatique Programmation Programmation web Questions, aides et recherches Résolu : Un problème avec TypeError
  • #6
Afin d'être plus visible dans le code Javascript en question voici le code complet :
JavaScript:
signup: function() {
                var e = this;
                return this.loading ? this.$parent.flashError([{
                    error: !0,
                    message: "Patience, nous vérifions déjà les informations entrées..."
                }]) : (this.$Progress.start(),
                _.isEmpty(this.userData.mail) ? this.$parent.flashError([{
                    error: !0,
                    message: "Merci d'entrer une adresse mail."
                }]) : _.isEmpty(this.userData.mail_confirmation) ? this.$parent.flashError([{
                    error: !0,
                    message: "Merci de confirmer l'adresse mail."
                }]) : _.isEqual(this.userData.mail, this.userData.mail_confirmation) ? _.isEmpty(this.userData.username) ? this.$parent.flashError([{
                    error: !0,
                    message: "Merci d'entrer un nom d'utilisateur."
                }]) : _.isEmpty(this.userData.password) ? this.$parent.flashError([{
                    error: !0,
                    message: "Merci d'entrer un mot de passe."
                }]) : _.isEmpty(this.userData.password_confirmation) ? this.$parent.flashError([{
                    error: !0,
                    message: "Merci de confirmer mot de passe."
                }]) : _.isEqual(this.userData.password, this.userData.password_confirmation) ? _.isEmpty(this.userData.birthday) ? this.$parent.flashError([{
                    error: !0,
                    message: "Merci d'entrer une date de naissance."
                }]) : (this.loading = !0,
                void a.a.post(this.routes["do.user.create"], this.userData).then((function(t) {
                    t.data.error ? (e.loading = !1,
                    e.$parent.flashError([{
                        error: !0,
                        message: t.data.message
                    }])) : (e.$store.commit("UPDATE_USER_DATA", t.data.user),
                    e.$parent.flashError([{
                        error: !1,
                        message: "Bienvenue " + e.userData.username + ", ton compte a bien été crée !"
                    }]),
                    setTimeout((function() {
                        e.$router.push("user")
                    }
                    ), 1500))
                }
                )).catch((function(t) {
                    console.log('t.response');
                    if (422 === t.response.status) {
                        e.loading = !1;
                        var n = [];
                        Object.entries(t.response.data.errors).forEach((function(e) {
                            document.getElementById(e[0]).setAttribute("style", "border: 2px solid #d10000;"),
                            n.push({
                                error: !0,
                                message: e[1][0]
                            })
                        }
                        )),
                        e.$parent.flashError(n)
                    }
                }
                ))) : this.$parent.flashError([{
                    error: !0,
                    message: "Les mots de passe ne correspondent pas."
                }]) : this.$parent.flashError([{
                    error: !0,
                    message: "Les adresses mail ne correspondent pas."
                }]))
            },
 

73V3N9!V3N

Membre
Inscription
19 Octobre 2018
Messages
23
Réactions
2
Points
1 394
    Réponse de 73V3N9!V3N Informatique Programmation Programmation web Questions, aides et recherches Résolu : Un problème avec TypeError
  • #7
Je ne vais pas vous embêter plus longtemps avec ça, je vais retourner à une version antérieure.
Merci tout de même pour votre aide.
 

Discussions similaires


Haut Bas