Jquery / Ajax / .post()

Par Leo Tiollier, il y a 10 ans


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, il y a 10 ans

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

ToToSe, il y a 10 ans

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, il y a 10 ans

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 ); });
Leo Tiollier, il y a 10 ans

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..

Leo Tiollier, il y a 10 ans

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