Bonjour à tous,
J'ai un formulaire que je souhaite envoyer en utilisant Ajax, cependant cela ne fonctionne pas, et je n'arrive pas à trouver le problème.
Voici mon fichier fonction.php (J'affiche le nom juste pour tester...)
Voici mon fichier javascript
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 add_action( 'wp_ajax_custom_action', 'custom_action' ); add_action( 'wp_ajax_nopriv_custom_action', 'custom_action' ); function custom_action() { if(isset($_POST['name']) && isset($_POST['email']) && isset($_POST['message'])) { if(($_POST['name'] !== '') && ($_POST['email'] !== '') && ($_POST['message'] !== '')) { $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $myemail = "vincentbaguet@live.fr"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $headers .= 'Reply-To: ' . $email . "\n"; // Mail de reponse $headers .= 'To: ' . $myemail . ' <'. $myemail . '>' . "\r\n"; $headers .= 'From: ' . $name . ' <' . $email . '>' . "\r\n"; $headers .= 'Delivered-to: ' . $myemail . "\n"; // Destinataire $title = 'Un nouveau message prevenant de la Fondation Zita'; $message = '<html><body>' . $message . '</body></html>'; $mail = wp_mail($myemail, $title, $message, $headers); echo $_POST['name']; } } echo $_POST['name']; }
Cela fonctionne bien quand les champs sont vides, j'ai bien le message d'erreur, mais après ça se complique.
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 $(document).ready(function() { $('#contact').submit(function(e){ e.preventDefault(); name = $(this).find("#name").val(); email = $(this).find("#email").val(); message = $(this).find("#message").val(); if(name === '' || email === '' || message === '') { $("#error").empty(); $("#error").append("Tous les champs doivent être remplis."); $('#error').slideDown(function() { setTimeout(function() { $('#error').slideUp(function() {}); }, 3000); }); } else { var submitform = $(this).serialize(); $.ajax({ url: '/wp-admin/admin-ajax.php', data: submitform, type: 'post', success: function(data) { alert(data); //should print out the name since you sent it along } }); } return false; }); });
Mon fichier template-contact.php
Merci de votre aide
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
49 <?php /* Template Name: Contact */ get_header(); ?> <?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <article class="post"> <header> <div class="title"> <h2><a href="#"><?php single_post_title(); ?></a></h2> </div> </header> <?php the_content(); ?> <form id="contact" method="post" action=""> <div class="row uniform"> <div class="6u 12u$(xsmall)"> <input type="text" name="name" id="name" placeholder="Nom" /> </div> <div class="6u$ 12u$(xsmall)"> <input type="email" name="email" id="email" placeholder="Email" /> </div> <div class="12u$"> <textarea name="message" id="message" placeholder="Message" rows="6"></textarea> </div> <div class="12u$"> <ul class="actions"> <li><input type="submit" value="Envoyer" /></li> <li><input type="reset" value="Vider le formulaire" /></li> </ul> </div> </div> </form> </article> <?php endwhile; ?> <?php endif; ?> <?php get_footer(); ?>
Partager