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 :

ajax() POST success et error, en cas d'erreur n'exécute pas [AJAX]


Sujet :

jQuery

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut ajax() POST success et error, en cas d'erreur n'exécute pas
    Bonjour.

    Success s'exécute tout le temps même s'il y a des erreurs. Du côté PHP, le script fonctionne très bien et sans erreur.

    Voici le code problème :

    Code : 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
    $(document).ready(function() {
      $('#contact-form').submit(function(e) {
        e.preventDefault();
        $.ajax({
          url: 'sendmail.php',
          type: 'POST',
          data: $('#contact-form').serialize(),
          success: function(response) {
            //alert(response);
            $('#contact-form')[0].reset();
            $('#contact-form').append('<div class="alert alert-success">Success:' + response + '</div>');
          },
            error: function() {
              alert('Error occurs!');
           } 
     
        });
      });
    });
    Quand le formulaire est bien rempli, l'envoi du courriel se fait très bien; mais, lorsque l'entrée utilisateur a des erreur PHP va les bloquer via les filtres établis par PHP. Mais, le Js va seulement indiquer "success" sans jamais "error".

    formulaire.php et le traitement est sendmail.php

    Alors, quelque chose ne va pas correcte dans le script ci-haut.

    Javascript n'est pas ma spécialité.

    De l'aide me serait utilse, s.v.p. merci.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par dancom5 Voir le message
    même s'il y a des erreurs.
    quelles erreurs ? quelles données sont retournées par la requête ?

  3. #3
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Mon fichier de traitement :

    Code : 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
    <?php
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
     
    // Check if form has been submitted
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      
        // Validate name
        $name = test_input($_POST["name"]);
        if (empty($name)) {
                $nameErr = "Name is required";
        } else {
            // Check if name contains only letters and whitespace
            if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
                $nameErr = "Only letters and white space allowed";
            }
        }
     
        // Validate email
        $email = test_input($_POST["email"]);
        if (empty($email)) {
            $emailErr = "Email is required";
        } else {
            // Check if email is valid
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $emailErr = "Invalid email format";
            }
        }
      
        // Validate subject
        $subject = test_input($_POST["subject"]);
        if (empty($subject)) {
            $subjectErr = "subject is required";
        }
     
        // Validate message
        $message = test_input($_POST["message"]);
        if (empty($message)) {
            $messageErr = "Message is required";
        }
      
    // If there are no errors, send email
    if (empty($nameErr) && empty($emailErr) && empty($subjectErr) && empty($messageErr)) {
          
        echo "passé";
        echo $name. '<br/>'; 
        echo $subject. '<br/>';  
        echo $message. '<br/>';  
        echo $email. '<br/>';  
        
     
        // Code to send email
        // ...
     
        } // ERROR
    } // POST
     
    // Function to sanitize input data
    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
     
    ?>
    Si nécessaire le formulaire :
    Une ébauche seulement

    Code html : 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
    <!DOCTYPE html>
    <html>
      <head>
        <title>Formulaire avec AJAX</title>
        <link
          rel="stylesheet"
          href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css"
        />
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    </head>
      <body>
     
     
      <div class="container">
        <h1>Formulaire de contact</p>
      </div>
     
    <form id="contact-form" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
        <div class="form-group">
            <label for="name">Name</label>
            <input type="text" class="form-control" id="name" name="name" xrequired>
        </div>
        <div class="form-group">
            <label for="email">Email</label>
            <input type="text" class="form-control" id="email" name="email" xrequired>
        </div>
        <div class="form-group">
            <label for="subject">Subject</label>
            <input type="text" class="form-control" id="subject" name="subject" xrequired>
        </div>
        <div class="form-group">
            <label for="message">Message</label>
            <textarea class="form-control" id="message" name="message" rows="2" xrequired></textarea>
        </div>
        <button type="submit" class="btn btn-primary">Send message</button>
    </form>
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    le "error" correspond à une erreur dans la requete http comme par exemple une erreur 404 ou un format non valide.
    si vous voulez gérez les erreurs retournée par le code php, vous devrez faire cela dans la partie "success" en testant les données récupérées.

    et pour ces données, je vous conseille d'utiliser le format json
    du côté de php, vous générez ce format avec cette fonction : https://www.php.net/manual/fr/function.json-encode.php
    et du côté de javascript, vous avez des objets et tableaux directement utilisables.

  5. #5
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Au final: ChatGPT est mon ami.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Affichage de 2 messages en cas de success
    Par isitien dans le forum AJAX
    Réponses: 2
    Dernier message: 22/02/2011, 09h48
  2. [AJAX] Ajax post n'apparait pas
    Par systemz dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 26/06/2008, 21h19
  3. [AJAX] Post de Ajax
    Par lesafir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2007, 17h40
  4. [AJAX][post]tableau
    Par trach.sam dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 11/05/2006, 18h39
  5. [AJAX] Ajax Post
    Par stela86 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 18/04/2006, 16h23

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