Je rencontre un problème lors de ma procédure AJAX. Firebug me signal que ma requête contient bien les éléments de mon formulaire. Mais, en retour je n'ai qu'une réponse 0. Je n'arrive d'ailleurs pas à faire un var_dump coté fichier de gestion histoire de savoir ce qui est arrivé.
Je précise que j'ai suivi le tuto disponible ici : http://www.geekpress.fr/wordpress/tutor … ajax-1802/
Si vous avez une idée, je suis preneur, parce que je m'arrache les cheveux depuis trois jours et je ne trouve pas la solution.
je vous remercie de votre aide
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
je rajoute dans le header les éléments suivant :
<?php echo is_page('contact') ? '<script>var ajaxurl ="'.admin_url('admin-ajax.php').'"</script>' : ' ';?>
<?php if (is_page('contact' )){?>
<script type="text/javascript" src="<?php bloginfo('template_url') ?>/js/custom.js"></script>
<?php } ?>
Mon template page-contact :
<?php get_header(); ?>
<form action="#" method="post" class="contact-form">
<p>
<label for="contact-name">Nom :</label>
<input type="text" name="name" value="" id="contact-name" required>
</p>
<p>
<label for="contact-pname">Prénom :</label>
<input type="text" name="pname" value="" id="contact-pname" required>
</p>
<p>
<label for="contact-email">Email :</label>
<input type="email" name="email" value="" id="contact-email" required>
</p>
<p>
<label for="contact-message">Message :</label>
<textarea name="message" value="" id="contact-message" cols="88" rows="5" required></textarea>
</p>
<input type="submit" id="send-message" value="envoyer">
<input type="hidden" name="action" value="contact" />
<?php wp_nonce_field('ajax_contact_nonce', 'security' ); ?>
</form>
<?php get_footer( ); ?>
Le fichier Javascript
jQuery(document).ready(function($){
if($('#send-message').length > 0) {
$('body').append('<div id="noty"></div>');
var busy = null; // permet de gérer une soumission multiple du formulaire.
// A la soumission du formulaire
$('#send-message').click( function(){
var error = false,
form = $(this).parent('form');
form.find('[required]').each( function(){
// on vérifie si le champ est vide
if( $.trim( $(this).val() ) == ' ') {
$(this).css('border-color','#FF0000');
error = true;
}
else {
$(this).css('border-color','#CDCDCD');
}
});
if( !error){
if ( busy ){busy.abort();}
busy = $.ajax({
url: ajaxurl,
type: 'POST',
data: form.serialize(),
success: function( response ){
alert(response);
}
});
}
return false;
});
}
});
LE fichier Ajax :
<?php
add_action( ' wp_ajax_contact' , '_ajax_contact' );
add_action( ' wp_ajax_nopriv_contact' , ' _ajax_contact');
function _ajax_contact() {
check_ajax_referer( 'ajax_contact_nonce' , 'security' );
echo('toto');
die;
}
Salut à tous,
Suis-je vraiment le seul à faire des procédures AJAX sous WP ? Je ne dois pas être le seul à avoir du faire un truc çà ?
bonne journée à tous
<?php
add_action( 'wp_ajax_contact' , '_ajax_contact' );
add_action( 'wp_ajax_nopriv_contact' , '_ajax_contact');
function _ajax_contact() {
check_ajax_referer( 'ajax_contact_nonce' , 'security' );
echo('toto');
die;
}
Comme sa c'est mieux sans les espaces sur les add_action()
Salut AZO,
Effectivement, y'avais cette erreur que j'ai mis des siècles à trouver, mais il y a aussi un autre truc :
Je chargeais le fichier ajax.php via la commande require..... TEMPLATEPATH etc... qui n'allait pas. En fait, il faut passer par get_template_directory(). JE ne comprends pas vraiment pourquoi mais bon.
Sinon, je me demandais un truc. Comment faire apparaitre les erreurs dans un log. J'ai vu le define('WP_DEBUG, true), mais cela ne me mets rien dans un fichier.
Peut être existe-t-il ? mais ou ?
Salut
templatepath te donne une directory et bloginfo('template_url') une url certainement pour sa. JE ne suis pas sur pour WP_DEBUG mais il me semble que ce n'est que pour les erreus php.