IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Effacer/conserver saisie formulaire


Sujet :

jQuery

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut Effacer/conserver saisie formulaire
    Bonjour à tous,

    Je suis bloqué sur un formulaire, si quelqu'un voudrait bien me venir aide..

    J'aimerais dire : "Si le formulaire est correctement envoyé, je laisse les champs pseudo et email remplis et je supprime le champs texte, mais s'il y a une erreur lors de l'envoi, je laisse tous les champs remplis.

    Je vous montre ce que j'ai essayé de faire :

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    //Connexion Recaptcha
    grecaptcha.ready(function () {
      grecaptcha
        .execute("***", {
          action: "homepage",
        })
        .then(function (token) {
          document.getElementById("recaptchaResponse-com").value = token;
        });
    });
     
    $(document).ready(function () {
      //quand le DOM est là, on sélectionne les éléments avec lesquels on va travailler
      //c'est mieux de le faire une fois au début, pour des questions de perf
      //mais surtout pour éviter d'avoir à faire un gros ctrl + r pour changer les sélecteurs.
      const $comment_form = $("#comment_form");
      const $comment_content = $("#comment_content");
      const $comment_message = $("#comment_message");
      const $display_comment = $("#display_comment");
      $comment_form.on("submit", function (event) {
        event.preventDefault();
        const form_data = $comment_form.serialize();
        $.ajax({
          url: "add_comment.php",
          method: "POST",
          data: form_data,
          dataType: "JSON",
          success: function (data) {
            if (data.error !== "") {
              $comment_content.val(""); //ici je vide seulement le texte saisi après validation
              $comment_message.html(data.error);
              $comment_form[0].comment_id.value = "0";
              load_comment();
            }
          }, //ici j'essaie de ne pas vider le formulaire en cas d'erreurs
          error: function (data) {
            if (data.error !== "") {
              $comment_message.html(data.error);
              $comment_form[0].comment_id.value = "0";
              load_comment();
            }
          },
        });
        //on renouvelle le token pour envoyer un 2nd commentaire
        // Clef REcaptcha site ci dessous
        grecaptcha
          .execute("***", {
            action: "homepage",
          })
          .then(function (token) {
            document.getElementById("recaptchaResponse-com").value = token;
          });
      });
      reload();
      //////////////////////////////////
      function load_comment() {
        $.ajax({
          url: "fetch_comment.php",
          //POST pour envoyer des données, et GET pour obtenir des données
          method: "POST",
          success: function (data) {
            $display_comment.html(data);
            $(".reply").on("click", function () {
              $comment_form[0].comment_id.value = $(this).attr("id");
              $comment_form[0].comment_name.focus();
            });
          },
        });
      }
     
      function reload() {
        load_comment();
        setTimeout(reload, 10000);
      }
    });

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    <?php
    //add_comment.php
    $connect = new PDO('***');
    $error = '';
    $comment_name = '';
    $comment_content = '';
    $email = '';
    $date = new \DateTime($row["date"]);
    $formatedDate = (new IntlDateFormatter('fr_FR', IntlDateFormatter::LONG, IntlDateFormatter::SHORT));
    // DEBUT RECAPTCHA
    // On vérifie si le champ "recaptcha-response" contient une valeur
    if (empty($_POST['recaptcha-response']))
    {
    header('Location: index.html');
    die();
    }
    else
    {
    // On prépare l'URL
    $url = "https://www.google.com/recaptcha/api/siteverify?secret=***&response={$_POST['recaptcha-response']}";
    // On vérifie si curl est installé
    if (function_exists('curl_version'))
    {
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $response = curl_exec($curl);
    }
    else
    {
    // On utilisera file_get_contents
    $response = file_get_contents($url);
    }
    // On vérifie qu'on a une réponse
    if (empty($response) || is_null($response))
    {
    header('Location: index.html');
    die();
    }
    else
    {
    $data = json_decode($response);
    if ($data->score >= 0.5)
    {
    // je réalise mon action de formulaire.
    if (empty($_POST["comment_name"]))
    {
    $error .= '<p class="text-danger"></p>';
    }
    else
    {
    $comment_name = $_POST["comment_name"];
    }
    if (empty($_POST["comment_content"]))
    {
    $error .= '<p class="text-danger"></p>';
    }
    else
    {
    $comment_content = $_POST["comment_content"];
    }
    if (empty($_POST["email"]))
    {
    $error .= '<p class="text-danger"></p>';
    }
    else
    {
    $email = $_POST["email"];
    }
    if ($error == '')
    {
    $query = "
    INSERT INTO tbl_comment
    (parent_comment_id, comment, comment_sender_name, email)
    VALUES (:parent_comment_id, :comment, :comment_sender_name, :email)
    ";
    $statement = $connect->prepare($query);
    $statement->execute(array(
    ':parent_comment_id' => $_POST["comment_id"],
    ':comment' => $comment_content,
    ':comment_sender_name' => $comment_name,
    ':email' => $_POST["email"]
    ));
    $error = '<label class="validation">Ton message a bien été envoyé !</label>';
    }
    else
    {
    header('Location: index.html');
    die();
    }
    }
    else
    {
    $error = '<label class="validation">OOPS ! Ton message ne veut pas partir.. Réessaie !</label>'; // tu es potentiellement un robot.
    }
    }
    }
    // FIN RECAPTCHA
    // DEBUT FREE MOBILE SMS
    $commentaireHTML = "<html>
    <head>
    <title>Nouveau Commentaire !</title>
    </head>
    <body>
    <p>Monsite.com</p>
    <p>Rubrique Bla-Bla :</p>
    <ul>
    <li><b>Le </b>" . strip_tags($formatedDate->format($date)) . "</li>
    <li><b>Email : </b>" . strip_tags($email) . "</li>
    <li><b>Pseudo : </b>" . strip_tags($comment_name) . "</li>
    <li><b>Commentaire : </b>" . nl2br(strip_tags($comment_content)) . "</li>
    </ul>
    </body>
    </html>
    ";
    // inclure ici le fichier de la classe
    require_once "FreeMobileSMS.php";
    $sms = new FreeMobileSMS();
    /**
    * configure l'ID utilisateur et la clé disponible dans
    * le compte Free Mobile après avoir activé l'option.
    */
    $sms->setKey("***")
    ->setUser("***");
    try
    {
    // envoi d'un message
    $sms->send(html_entity_decode(strip_tags("$commentaireHTML")));
    }
    catch(Exception $e)
    {
    // il y aura peut-être des erreurs.
    $this
    ->Session
    ->setFlash("Erreur sur envoi de SMS: (" . $e->getCode() . ") " . $e->getMessage() , 'danger');
    }
    // FIN FREE MOBILE SMS
    $data = array(
    'error' => $error
    );
    echo json_encode($data);
    ?>

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 220
    Points : 15 511
    Points
    15 511
    Par défaut
    le souci est à quelle étape ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    A cette étape : //ici j'essaie de ne pas vider le formulaire en cas d'erreurs
    Ligne 37 du code JS

    J’arrive à vider seulement le texte en conservant le pseudo et le mail mais à cette étape, en théorie ça ne devrait rien vider et ça me vide quand même le texte

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 634
    Points : 66 650
    Points
    66 650
    Billets dans le blog
    1
    Par défaut
    Tout dépend de quel coté se fait la vérification ...

    Si elle se fait en JS coté client (avant le submit) , le formulaire n'est pas envoyé, le page pas rechargée, et donc les données ne sont pas effacées.

    Si la vérification se fait (en php par exemple) coté serveur (après le submit), la page se recharge il faut donc renseigner les champs du formulaire avec les données reçues en get ou en post lors de la soumission.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Je débute mais si j’ai bien compris ce que tu me dis la vérification se fait en JS..

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 634
    Points : 66 650
    Points
    66 650
    Billets dans le blog
    1
    Par défaut
    Tu es dans un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $comment_form.on("submit",
    il y a bien un preventDefault qui inhibe l'envoi du form
    à priori la vérification se fait en ajax coté serveur.
    il faudrait savoir ce que contient data sur le retour que ce soit en success ou error...

    success / error ne veut pas dire que le serveur a détécté des erreurs de saisie ou non, ça veut dire que l'ajax a réussi ou pas ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Pourrais-tu m'expliquer comment faire pour savoir ce que contient data sur le retour stp ?

    y'a t'il un lien avec console.dir() et console.log() ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 634
    Points : 66 650
    Points
    66 650
    Billets dans le blog
    1
    Par défaut
    Pour voir le contenu du data lors du retour (par exemple du success:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     success: function (data) {
                  console.log(data)
     
    .../...
    puis tu regardes en console...

    ou alors tu regardes directement en console dans l'onglet xhr ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Je te remercie.

    Si je fais
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    success: function (data) {
                  console.log(data)

    Quand le message est correctement envoyé j'obtiens ceci :
    [Log] {error: "<label class=\"validation\">Ton message a bien été envoyé !</label>"} (commentaires.js, line 28)
    Si je simule une erreur lors de l'envoi j'obtiens ceci :
    [Log] {error: "<label class=\"validation\">OOPS ! Ton message ne veut pas partir.. Réessaie !</label>"} (commentaires.js, line 28)
    ______________

    ET si je fais
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error: function (data) {
                  console.log(data)
    Je n'ai aucun retour..

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 634
    Points : 66 650
    Points
    66 650
    Billets dans le blog
    1
    Par défaut
    c'est rassurant !
    Cela veut dire que ton ajax se déroule bien puisqu'il ne passe pas par le error.

    Il te reste maintenant à exploiter le retour ...


    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    success: function (data) {
                  console.log(data.error)
    car tu reçois en retour un objet JSON qui a une clef "error"

    tu devrais voir en console le code html contenu dans la clef error du JSON retourné
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Si je fais
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    success: function (data) {
                  console.log(data.error)

    Quand le message est correctement envoyé j'obtiens ceci :
    <label class="validation">Ton message a bien été envoyé !</label>
    Si je simule une erreur lors de l'envoi j'obtiens ceci :
    <label class="validation">OOPS ! Ton message ne veut pas partir.. Réessaie !</label>
    Et aucun retour avec
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error: function (data) {
                  console.log(data.error)

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 634
    Points : 66 650
    Points
    66 650
    Billets dans le blog
    1
    Par défaut
    Oui donc tu récupères bien un bout de code HTML retourné par le serveur que tu peux insérer dans ta page.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Je ne vois pas ou tu veux en venir par rapport à mon problème de base

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 634
    Points : 66 650
    Points
    66 650
    Billets dans le blog
    1
    Par défaut
    test la réponse ...
    si c'est le message est "<label class="validation">Ton message a bien été envoyé !</label>" ça veut dire que la saisie est correcte et du coup tu peux changer de page ...
    si la réponse est "<label class=\"validation\">OOPS ! Ton message ne veut pas partir.. Réessaie !</label>" ça veut dire qu'il y a eu un souci de vérification et a ce moment là il ne faut pas recharger la page ... (et llà les champs ne seront pas vidés ...)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Désolé j'ai du mal avec le PHP/JS.

    Si je comprends bien ce que tu me dis, c'est donc un problème dans le PHP et non le JS ? Ou je suis à côté de la plaque..

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 634
    Points : 66 650
    Points
    66 650
    Billets dans le blog
    1
    Par défaut
    le message que tu reçois en retour est généré par PHP ...

    en fonction du message que tu reçois en retour, c'est a toi de savoir si tu dois ou non recharger la page ...
    dans le success si le message retourné est bon tu continues, sinon tu ne recharge pas
    dans le error tu ne recharges jamais...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Salut, je te remercie pour ta patience ^^

    le message que tu reçois en retour est généré par PHP ...
    Jusque là tout va bien..

    en fonction du message que tu reçois en retour, c'est a toi de savoir si tu dois ou non recharger la page ...
    dans le success si le message retourné est bon tu continues, sinon tu ne recharge pas
    dans le error tu ne recharges jamais...
    Ca s'apparente à une tentative que j'avais fait avant de venir poster sur le forum.. Sauf que je n'avais pas réussi à le mettre en pratique.


    si tu dois ou non recharger la page
    Est-ce que je suis sur le bon chemin en utilisant ma fonction "load_comment" ?

    _________

    PS :

    Je ne comprends pas, en faisant ceci j'obtiens ce que je veux mais ça ne me parait pas du tout logique :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $.ajax({
        url: "add_comment.php",
        method: "POST",
        data: form_data,
        dataType: "JSON",
        success: function(data) {
            if (data.error !== '<label class="validation">Ton message a bien été envoyé !</label>') {
                $comment_message.html(data.error);
                $comment_form[0].comment_id.value = "0";
                load_comment();
            }
            if (data.error !== '<label class="validation">OOPS ! Ton message ne veut pas partir.. Réessaie !</label>') {
                $comment_content.val(""); //ici je vide seulement le texte saisi après validation
                $comment_message.html(data.error);
                $comment_form[0].comment_id.value = "0";
     
            }
        },
        error: function(data) {
            if (data.error !== "") {
                $comment_message.html(data.error);
                $comment_form[0].comment_id.value = "0";
     
            }
        },
    });

  18. #18
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 120
    Points
    44 120
    Par défaut
    Bonjour,
    Je ne comprends pas, en faisant ceci j'obtiens ce que je veux mais ça ne me parait pas du tout logique :
    même si tu retournes une erreur depuis ton fichier serveur c'est considéré comme une transaction à succès donc à traiter dans le success de l’objet Ajax.

    Une « bonne façon » de faire est de retourner une chaine sous forme d'objet JSON, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
      "statut": "OK",
      "message": "le texte que tu souhaites afficher ou même du HTML"
    }
    et de traiter suivant la valeur de data.statut, cela aura le mérite d'être plus clair.

  19. #19
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2021
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Bonjour NoSmoking,

    Est-ce que ça te dérangerait de me montrer ta façon de faire directement avec mon code PHP/JS ?

    Ça m’éviterait de tâtonner et de me demander si ce que j’ai fait est juste.

    J’aimerais bien voir la solution au propre, j’apprendrais tout autant

  20. #20
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 120
    Points
    44 120
    Par défaut
    Côté serveur quelque chose comme :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (cBon ) {
      $retour["status"] = "OK";
      $retour["message"] = "Ton message a bien été envoyé !";
    }
    else {
      $retour["status"] = "N0K";
      $retour["message"] = "OOPS ! Ton message ne veut pas partir.. Réessaie !";
    }
    echo json_encode($retour);
    et côté client quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    done: function(data) {        // autant ce mettre à jour (*)
        if (data.status == "OK") {
          $comment_message.html(data.message);
          $comment_form[0].comment_id.value = "0";
          load_comment();
        }
        else {
          $comment_content.val("");
          $comment_message.html(data.message);
          $comment_form[0].comment_id.value = "0";
        }
    il y a des choses communes dans les deux cas qui pourraient surement être regroupées !

    (*)
    Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are removed as of jQuery 3.0. You can use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

Discussions similaires

  1. [AJAX] saisies formulaires qui s'effacent
    Par socaw dans le forum AJAX
    Réponses: 5
    Dernier message: 18/11/2011, 17h14
  2. effacer la saisie semi automatique
    Par intik dans le forum Windows XP
    Réponses: 1
    Dernier message: 19/01/2007, 23h16
  3. Validation saisie formulaire
    Par pleasewait dans le forum IHM
    Réponses: 2
    Dernier message: 29/12/2006, 16h20
  4. masque saisie formulaire
    Par cramix dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 02/12/2006, 17h11
  5. Contrôle de saisie formulaire
    Par miram dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2006, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo