Bonjour,
voila je débute avec jquery et l'Ajax en général. Je n'arrive pas à faire fonctionner mon système. Un simple envoi d'email. Avec Google Chrome et l'onglet Network/XHR je voit bien une requete ajax réussite avec l'envoi des variables qui sont ok.. Merci d'avance..

index.html

<!-- Modal Structure -->
  <form method="post" id="contact" action="contact.php">
  <div id="modal3" class="modal" style="width: 55%">
    <div class="modal-content">
      <h4 style="margin-bottom: 50px;">Contact</h4>

      <div class="input-field" style="margin-bottom: 50px;">
          <input id="email-cont" type="email" class="validate" style="width: 70%;" name="cont_email">
          <label for="last_name" data-error="Email invalide">Email</label>
       </div>
       <div class="input-field">
          <textarea id="texte-cont" class="materialize-textarea" name="cont_texte"></textarea>
          <label for="textarea1">Commentaire</label>
        </div>
    </div>
    <div class="modal-footer">
      <button class="waves-effect waves-green btn-flat" type="submit">Envoyer</button>
    </div>
  </div>
  </form>

ajax.js

(function($){
    $('#contact').on('submit', function(e){
        e.preventDefault();
        var email = $("#email-cont").val();
        var texte = $("#texte-cont").val();

        $.post(
            'contact.php', // Le fichier cible côté serveur.
            {
                cont_email: email,
                cont_texte: texte
            },
            'nom_fonction_retour', // Nous renseignons uniquement le nom de la fonction de retour.
            'text' // Format des données reçues.
        );

        function nom_fonction_retour(){
            alert("yolo");
        }       

    });

})(jQuery);

contact.php

<?php   
    $email = $_POST['cont_email'];
    $message = $_POST['cont_texte'];
    $sujet = 'NoMemory - Contact Email';
    $message = '

    <div style="padding:5px; width:100%; height: 100%; background-color:#EFFFCD; border:10px solid #2E2633">
        <div>
            <center><img src="http://leotiollier.altervista.org/images/logo.png"/></center>
        </div>
        <center><h1 style="color:#555152;">NoMemory.</h1></center>
        <div style="margin: 0% 20% 10% 20%;">  
            <h3 style="color:#555152;">Contact de '.$email.',</h3><br>
            <p style="color:#555152;">'.$message.'</p>
        </div>
    </div>';

    $destinataire = 'ltiollier30@gmail.com';
    $headers = 'Content-Type: text/html; charset=\'iso-8859-1\'';
    mail($destinataire,$sujet,$message,$headers);   
?>

5 réponses


Damarus
Réponse acceptée

Salut, est-ce que ton script PHP fonctionne sans Ajax ?

ToToSe
Réponse acceptée

Yop!
ton parametre callback est en string ^^

 $.post(
            'contact.php', // Le fichier cible côté serveur.
            {
                cont_email: email,
                cont_texte: texte
            },
            nom_fonction_retour, // Nous renseignons uniquement le nom de la fonction de retour.
            'text' // Format des données reçues.
        );

ou encore, inclut directement ton callback dans ta fonction comme suit :

 $.post(
            'contact.php', // Le fichier cible côté serveur.
            {
                cont_email: email,
                cont_texte: texte
            },
           function (data){
            alert("yolo");
           },   
            'text' // Format des données reçues.
        );
Huggy
Réponse acceptée

Tu peux aussi utiliser un chainage

 $.post(
            'contact.php', // Le fichier cible côté serveur.
            {
                cont_email: email,
                cont_texte: texte
            }, 
            'text' // Format des données reçues.
        )
  .done(function (msg, textStatus, jqXHR){
            alert("yolo");
           })
  .fail (function( msg, textStatus, jqXHR ) {
            alert( "Error: " + jqXHR );
     });

Merci de vos réponses. J'ai changé mon callback. Le problème semble venir du PHP.. Il n'a pas d'envoi d'email ! J'ai fait une version sans Ajax :
index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/>
  <title>NoMemory - Accueil</title>

</head>
<body>
    <form method="post" action="temp.php">
        <input type="email" name="cont_email">
        <input type="text" name="cont_texte">
        <button type="submit">Test</button>
    </form>
</body>

temp.php

<?php   
    $email = $_POST['cont_email'];
    $texte = $_POST['cont_texte'];
    $sujet = 'NoMemory - Contact Email';
    $message = '

    <div style="padding:5px; width:100%; height: 100%; background-color:#EFFFCD; border:10px solid #2E2633">
        <div>
            <center><img src="http://leotiollier.altervista.org/images/logo.png"/></center>
        </div>
        <center><h1 style="color:#555152;">NoMemory.</h1></center>
        <div style="margin: 0% 20% 10% 20%;">  
            <h3 style="color:#555152;">Contact de '.$email.',</h3><br>
            <p style="color:#555152;">'.$texte.'</p>
        </div>
    </div>';

    $headers = 'Content-Type: text/html; charset=\'iso-8859-1\'';
    if(mail('ltiollier30@gmail.com',$sujet,$message,$headers))
    {
            echo'ok';
    }
    else
    {
            echo'raté';
    }
?>

Le résultat est 'ok' pourtant je ne recois pas d'email (SPAM comprit). Je ne comprend pas..

Merci de votre aide ! Serveur qui n'envoi pas d'email (va savoir). Merci pour le Callback ! Sujet Fermé