IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Procédure AJAX et retour 0


Sujet :

WordPress PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut Procédure AJAX et retour 0
    Bonjour à tous,

    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.

    A priori les nonce passent aussi, mais comme je n'arrive pas à faire de var_dump des données reçues, je ne sais pas ce qu'il se passe.

    Je me rends compte qu'il doit y avoir une erreur à la C... dans tout cela mais ou....... Peut être faut il configurer le fichier wp-admin/admin-ajax.php ? Mais je ne sais pas quoi faire

    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?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 :

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?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();
     
    }

  2. #2
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut
    Salut à tous,

    Ne me dites pas que personne n'a encore utilisé d'AJAX sur un site WP.

    J'ai remarqué qu'il y avait plein de trucs sur le net par rapport à ce retour 0 mais je ne trouve pas ce qui cloche.

  3. #3
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut
    J'ai continué un peu le truc. Ce que je veux c'est de récupérer les données du formulaire et m'en servir pour envoyer un mail.

    Comme je suis en local, je demande juste de créer un fichier txt.
    je modifie le fichier ajax. php comme ceci :

    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
    <?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');
     
    /********************************
    *           protection des variables
    *********************************/
     
        $name = wp_strip_all_tags($_POST['name']);
        $pname = wp_strip_all_tags($_POST['pname']);
        $sender = sanitize_email($_POST['email']);
        $message = nl2br(stripcslashes(wp_kses($_POST['message'] , $$GLOBALS['allowedtags'] ) ) ) ;
     
    /***********************************
    *           GEstion des headers
    ************************************/
        $headers = array();
        $headers[] = 'FROM : ' . $name . '<' .$sender . '>' . "\r\n";
     
     
    /*****************************************************
    *           GEstion du message
    *******************************************************/
     
        ob_start();
        include (TEMPLATEPATH.'inc/mail/contact.php');
        $mail = ob_get_contents();
     
        ob_end_clean();
        file_put_contents(TEMPLATEPATH . 'inc/mail/mail.txt' , $mail);
     
    }
    et ben rien ne se passe. Pas de création d'un fichier txt.

    Conclusion, je pense que le problème vient de la fonction check_ajax_referer qui doit considérer le nonce comme non valide et donc ne pas exécuter la suite du script.

    Dans Firebug j'ai cela comme info
    _wp_http_referer /wp2/contact/
    action contact
    email coucou@toto.fr
    message coucou <?php ?>
    name tata
    pname toto
    security ead902e394

Discussions similaires

  1. ajax et retour Json
    Par sause dans le forum jQuery
    Réponses: 5
    Dernier message: 25/09/2010, 18h12
  2. [MySQL] procédure stockée et retour de valeur
    Par Papy214 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/02/2010, 10h00
  3. Ajax bouton retour framework
    Par Abella dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 06/03/2009, 18h29
  4. [AJAX] Ajax en retour undefined
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/04/2006, 10h47
  5. Procédure stockée avec retour de curseur
    Par Oufti dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/11/2005, 22h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo