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);
?>
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.
);
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é