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 retourne toujours une erreur [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2012
    Messages : 81
    Par défaut Ajax retourne toujours une erreur
    Bonjour, mon script ajax me retourne toujours "error". L'envoie du mail est correct, mais ajax ne me retourne jamais "success". N'étant pas un expert en JS, je tourne en rond. Si quelqu'un à une explication, merci d'avance.


    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
    <form class="contactForm" data-toggle="validator" id="formContact" method="post" name="formContact" role="form">
    <div class="form-group">
    <input class="form-control" pattern="^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$" data-error="Veuillez saisir une adresse email valide" data-toggle="tooltip" data-validate="true" id="email" name="email" placeholder="Email" type="text">
    <div class="text-left help-block with-errors">
    </div>
    </div>
    <div class="form-group">
    <input class="form-control" pattern=".{1,2}" data-error="Veuillez saisir un sujet entre 5 et 30 caractères" data-toggle="tooltip" data-validate="true" id="subject" name="subject" placeholder="Sujet" type="text">
    <div class="text-left help-block with-errors">
    </div>
    </div>
    <div class="form-group">
    <textarea class="form-control" data-minlength="2" data-error="Veuillez saisir un message d'au moins 20 caractères" data-toggle="tooltip" data-validate="true" id="message" name="message" placeholder="Message" rows="5"></textarea>
    <div class="text-left help-block with-errors">
    </div>
    </div>
    <div class="text-center">
    <button class="btn btn-hot btn-xs disabled" id="btnSubmit" tabindex="-1" title="Send Message" type="submit" disabled>Valider</button>
    </div>
    </form>

    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
    <?php
    use PHPMailer\PHPMailer\PHPMailer;
    require 'lib/PHPMailer/src/Exception.php';
    require 'lib/PHPMailer/src/PHPMailer.php';
    require 'lib/PHPMailer/src/SMTP.php';
     
    $email = trim($_POST['email']);
    $subject = trim($_POST['subject']);
    $message = trim($_POST['message']);
     
    $mail = new PHPMailer;
    $mail->CharSet = 'UTF-8';
    $mail->isSMTP();
    $mail->isHTML(TRUE);
    $mail->SMTPDebug = 2;
    $mail->Host = '';
    $mail->Port = 587;
    $mail->SMTPSecure = 'tls';
    $mail->SMTPAuth = true;
    $mail->Username = "";
    $mail->Password = "";
    $mail->setFrom('');
    $mail->addAddress($email);
    $mail->Subject = $subject;
    $mail->msgHTML(file_get_contents('sm.html'), __DIR__);
     
    if(!$mail->send())
    {
       $signal = 'err';
       $msg = 'Erreur';
    }
    else
    {
       $signal = 'ok';
       $msg = 'Valide';
    }
     
    $data = array(
    'signal' => $signal,
    'msg' => $msg
    );
     
    echo json_encode($data);
    ?>

    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
    $(document).ready(function(){
    $('form').submit(function(){
    event.preventDefault();
    $.ajax({
    dataType: 'JSON',
    url: 'mailer.php',
    type: 'POST',
    data: $(this).serialize(),
    beforeSend: function(xhr){
    $('#btnSubmit').html('Envoi en cours...');
    },
    error: function(textStatus, xhr){
    $('.notification').jAddMessage({
    html: '<p>Erreur de traitement</p>',
    type: 'error',
    buttonstyling: 'false'
    });
    },
    success: function(response){
    $('.notification').jAddMessage({
    html: '<p>Votre message à été envoyé avec succes</p><p>Nous vous contacterons dans les meilleurs délais</p>',
    type: 'success',
    buttonstyling: 'false'
    });
    },
    complete: function(){
    $('#btnSubmit').html('Valider');
    $('#btnSubmit').prop('disabled', true);
    $('#formContact')[0].reset();
    }
    });
    });
    });

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 534
    Par défaut
    Salut

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $('form').submit(function(event){//event ici comme paramètre
          event.preventDefault();
    ...
    2-Essaies de retourner l'erreur du xhr pour avoir plus de détails :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    error: function(textStatus, xhr){
        $('.notification').jAddMessage({
            html: '<p>Erreur de traitement :'+textStatus.responseText+'</p>',
            type: 'error',
            buttonstyling: 'false'
        });
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2012
    Messages : 81
    Par défaut
    J'ai la réponse: undefined

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 534
    Par défaut
    et textStatus.responseText ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2012
    Messages : 81
    Par défaut
    J'ai le retour de PhpMailer

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 534
    Par défaut
    tu peux copier coller l'erreur ici ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2012
    Messages : 81
    Par défaut
    J'ai aussi ajouté textStatus.responseText pour success, après avoir commenté la ligne posant problème, est j'ai la valeur 'undefined'. Est-ce normal ?

  8. #8
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 534
    Par défaut
    .responseText est accessible seulement dans le callback "error", pas dans "success"

  9. #9
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2012
    Messages : 81
    Par défaut
    Mon problème semble être corriger, mais sans comprendre pourquoi.

    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
    use PHPMailer\PHPMailer\PHPMailer;
    require 'lib/PHPMailer/src/Exception.php';
    require 'lib/PHPMailer/src/PHPMailer.php';
    require 'lib/PHPMailer/src/SMTP.php';
     
    $email = trim($_POST['email']);
    $subject = trim($_POST['subject']);
    $message = trim($_POST['message']);
     
    $mail = new PHPMailer;
    $mail -> CharSet = 'UTF-8';
    $mail -> isSMTP();
    $mail -> isHTML(true);
    $mail -> SMTPDebug = 0;
    $mail -> Host = 'smtp.phpnet.org';
    $mail -> Port = 587;
    $mail -> SMTPSecure = 'tls';
    $mail -> SMTPAuth = true;
    $mail -> Username = "username";
    $mail -> Password = "password";
     
    $mail -> addAddress($email);
    $mail -> setFrom('support@coppea.fr');
    $mail -> Subject = "Accusé de réception de demande en ligne";
    $mail -> msgHTML(file_get_contents('sm.html'), __DIR__);
     
    ($mail -> send()) ? $send_client = 1 : $send_client = 0;
     
    $mail -> ClearAllRecipients();
    $mail -> addAddress("mail@gmail.com");
    $mail -> setFrom($email);
    $mail -> Subject = "Demande en ligne";
    $mail -> msgHTML($message);
     
    ($mail -> send()) ? $send_admin = 1 : $send_admin = 0;
     
    if($send_client == 0 && $send_admin == 0) {
      $type = 'error';
      $msg = '<p>Notre site à rencontré un problème de traitement. Veuillez réessayez plus tard</p>';
    }
    else {
      $type = 'valid';
      $msg = '<p>Votre message à été envoyé avec succès</p><p>Nous vous contacterons dans les meilleurs délais</p>';
    }
     
    $data = array('type' => $type, 'message' => $msg);
     
    echo json_encode($data);
    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
    $(document).ready(function(){
      $('form').submit(function(){
        event.preventDefault();
        $.ajax({
          dataType: 'json',
          url: 'mailer.php',
          type: 'POST',
          data: $(this).serialize(),
          beforeSend: function(){
            $('#btnSubmit').html('Envoi en cours...');
          },
          error: function(){
            $('.notification').jAddMessage({
              html: '<p>Notre site à rencontré un problème de traitement. Veuillez réessayez plus tard</p>',
              type: 'error',
              buttonstyling: 'false'
            });
          },
          success: function(data){
            if(data.type == "error"){
              $('.notification').jAddMessage({
                html: data.message,
                type: 'error',
                buttonstyling: 'false'
              });
            }
            else{
              $('.notification').jAddMessage({
                html: data.message,
                type: 'success',
                buttonstyling: 'false'
              });
            }
          },
          complete: function(){
            $('#btnSubmit').html('Valider');
            $('#btnSubmit').prop('disabled', true);
            $('#formContact')[0].reset();
          }
        });
      });
    });
    Merci

  10. #10
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 534
    Par défaut
    Cela a fonctionné parce que tu as écrasé l'affectation de variable de la ligne 25 (dans le code php) par 33.

    puis tu as oublié de mettre event comme paramètre de la fonction submit, je te l'avais déjà dit...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     $('form').submit(function(event){//event ici !
        event.preventDefault();
        ....

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

Discussions similaires

  1. Condition IF retourne systématiquement une erreur
    Par Warluck dans le forum Excel
    Réponses: 2
    Dernier message: 17/01/2013, 08h15
  2. Réponses: 2
    Dernier message: 19/01/2012, 14h23
  3. Pour importer les données en fichier CSV, toujours une erreur
    Par wangying dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 16/12/2011, 15h38
  4. Réponses: 3
    Dernier message: 13/05/2008, 12h30
  5. my eclipse me declare toujours une erreur
    Par zinou023 dans le forum Eclipse
    Réponses: 0
    Dernier message: 07/05/2008, 20h51

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