[RESOLU] Souci validation formulaire PHP (avec Ajax)

Terias
Invité n'ayant pas de compte PHPfrance

01 mars 2017, 17:48

Salut à tous,

j'espère poster au bon endroit (je ne suis pas certain que mon souci vienne du PHP).

Voila, pour éviter un rafraîchissement de la page suite à la validation du formulaire, j'ai pris parti d'utiliser Ajax.
Dans le debuggeur, je vois bien que les infos passent bien, l'appel ajax est bien en "success".

Mon problème, c'est que le mail ne part pas.
A noter que si j’enlève la partie Ajax, le mail est bien envoyé.

Si quelqu'un a une idée, je suis preneur.

Merci à tous ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

01 mars 2017, 18:58

Bonjour,
Dans le debuggeur, je vois bien que les infos passent bien, l'appel ajax est bien en "success".
Que répond le serveur distant ?
Si c'est un script PHP qui est appelé et doit envoyer le mail, tu peux faire un var_dump() des variables attendues et tu verra le résultat dans ta console de dev du navigateur dans l'onglet réseau en réponse du serveur.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

01 mars 2017, 20:15

Que répond le serveur distant ?
Si c'est un script PHP qui est appelé et doit envoyer le mail, tu peux faire un var_dump() des variables attendues et tu verra le résultat dans ta console de dev du navigateur dans l'onglet réseau en réponse du serveur.
Désolé, étant intégrateur de métier, le PHP n'est pas la techno que je gère le mieux.

Je me permets de copier mon code, ce qui te donnera peut-être une idée plus précise du problème.

HTML:
<form enctype="multipart/form-data" method="post" action="process.php" class="form" id="form">
     <input type="text" name="name" id="name" class="contact_name_txt" placeholder="Nom..." required />
     <input type="email" name="mail" id="mail" placeholder="Mail..." required />
     <textarea name="message" id="message"  placeholder="Message..." cols="30" rows="10" required ></textarea>
     <input type="submit" value="C'est parti !" name="submit" id="submit" class="btn btn-greyblue contact-btn" />
</form>
Le PHP:
<?php
	if(isset($_POST['submit'])) {
		$destinataire = "[email protected]";
		$nom = trim($_POST['name']);
		$message = trim($_POST['message']);
		$expediteur = $_POST['mail'];
		$sujet = '[RA] > Nouveau message (' . $expediteur . ')'   ;
		var_dump($nom);
		var_dump($message);
		var_dump($expediteur);
		$entetes  = 'MIME-Version: 1.0' . "\r\n";
		$entetes .= 'Content-type: text/html; charset= "utf-8"' . "\r\n";
		$entetes .= 'From: ' . $nom . ' <' . $expediteur .'>' . "\n";
		@mail($destinataire,$sujet, $message, $entetes);
		$reponse = true;
		} else {
			$reponse = false;
		}
	echo json_encode(['reponse' => $reponse]);
?>
Le JS (la partie ajax) :
$(document).ready(function() {
    $('#form').on('submit', function(e) {
        e.preventDefault();
        var $this = $(this);
        console.log($this.serialize());
		$.ajax({
			url: $this.attr('action'),
			type: $this.attr('method'),
			data: $this.serialize(),
			dataType: 'json',
			success: function(json) {
				if(json.reponse) {
					send_success();
					eraseForm();
				} else {
					send_error();
				}
			}
		});
    });
});
Je ne sais pas si j'ai utilisé le var_dump de la bonne façon, car je ne trouve rien dans la console (ou alors je ne sais pas chercher)

Merci de ton aide.

Petit nouveau ! | 2 Messages

02 mars 2017, 01:04

J'ai finalement réglé le souci.
Le problème venait d'ajax, pas de PHP.

Merci de ton aide.