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

jQuery Discussion :

jquery.ajax json retourne 0 selon navigateur [AJAX]


Sujet :

jQuery

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut jquery.ajax json retourne 0 selon navigateur
    Bien le bonjour du 1er mai,

    Je cherche depuis quelques heures ici et là une solution à mon problème... après moultes recherches sur google, je n'ai pas trouvé de réponse me permettant de le résoudre.

    Problème : jQuery.ajax retourne 0 sur firefox et mon tableau json sur chrome.

    Je précise que je suis sous wordpress dernière version, utilisant le plugin contact-form-7 dernière version. Que j'ai désactivé pour mes besoins le js et le css de traitement des données pour mes besoins sur toutes pages autres que la page de contact grâce au code :

    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
     
    <?php
    add_action("wp_print_scripts", "my_deregister_script", 100);
    function my_deregister_script(){
        if (!is_page('contact')){ echo '<h1>dudu</h1>';
            wp_deregister_script('contact-form-7');
        }
    }
    add_action("wp_print_styles", "my_deregister_styles", 100);
    function my_deregister_styles(){
        if (!is_page('contact')){
            wp_deregister_style('contact-form-7');
        }
    }
    ?>
    source de ce code : http://fr.slideshare.net/nicolasjuen...ress?player=js , sur le slide 24

    Ensuite, j'utilise le plugin wp-recaptcha dernière version (le recaptcha marche bien ).

    le jQuery utilisé :

    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
    50
    51
    52
    53
     
    (function($){
     
        $("#jf-register form").on("submit", function(e){
            e.preventDefault();
            var ser = $(this).serializeArray(); 
     
                $.ajax({
                    url: "/wp-admin/admin-ajax.php",
                    type: "post",
                    dataType: "J",
                    data: {
                        action: "ajax_add_user",
                        vars: ser
                    },
                    success: function(repJson){ console.log(repJson); 
                        if (repJson.rep_success === 1){  
                            window.location=''; 
                        } else{
                            if (repJson.recaptcha_wrong){
                                $("#recaptcha_errors").append("<p>Captcha incorrect</p>");
                            } else {
     
                                if (repJson.username_exists || repJson.username_null){
                                    $("#username").addClass("red-row");
                                    if (repJson.username_exists) $("#username_errors").append("<div>Pseudo déjà existant!</div>");
                                    if (repJson.username_null) $("#username_errors").append("<div>Pseudo vide!</div>");
                                }
                                if (repJson.email_exists || repJson.email_null || repJson.email_format ){
                                    $("#email").addClass("red-row");
                                    if (repJson.email_exists) $("#email_errors").append("<div>Email déjà existant!</div>");
                                    if (repJson.email_null) $("#email_errors").append("<div>Email vide!</div>");
                                    if (repJson.email_format) $("#email_errors").append("<div>Format invalide!</div>");
                                }
                                if (repJson.pass_null || repJson.pass2_null || repJson.pass_match){
                                    $("#pass, #pass2").addClass("red-row");
                                    if (repJson.pass_null) $("#pass_errors").append("<div>Mot de passe vide!</div>");
                                    if (repJson.pass2_null) $("#pass2_errors").append("<div>Vérification vide!</div>");
                                    if (repJson.pass_match) $("#pass2_errors").append("<div>Les mots de passe doivent être identiques!</div>");
                                }
     
                            }
     
                        }
                    },
                    error: function(err){
                        console.log(err.responseText);
                    }
                });
     
        });
     
    })(jQuery);
    Le php :

    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
     
    add_action("wp_ajax_nopriv_ajax_add_user", "ajax_add_user");
    function ajax_add_user(){
        global $wpdb;
        $return = array(); $return['rep_success'] = 0;
     
        /* pour vérification recaptcha */
        $response = isset( $_POST['vars'][9]['value'] ) ? esc_attr( $_POST['vars'][9]['value'] ) : '';
     
        $remote_ip = $_SERVER["REMOTE_ADDR"];
     
        // make a GET request to the Google reCAPTCHA Server
        $request = wp_remote_get(
             'https://www.google.com/recaptcha/api/siteverify?secret=/*Clé secrète que j'ai retirée*/&response=' . $response . '&remoteip=' . $remote_ip
        );
     
         // get the request response body
         $response_body = wp_remote_retrieve_body( $request );
         $res = json_decode( $response_body, true );
         /* Fin test recaptcha */
     
         if ($res['success']){ 
            /* ...tests sur les champs du formulaire... */
     
            if (/*...test si erreurs...*/) {
                if (wp_create_user( $_POST['vars'][5]['value'], md5($_POST['vars'][7]['value']), $_POST['vars'][6]['value'] )){
                    $return['rep_success'] = 1;
     
                    $_SESSION['is_registered'] = 1;
                }
            }
         } else {
             $return['recaptcha_wrong'] = 1;
         }
     
        print_r(json_encode($return)); die();
    }
    Voilà, il me semble que j'ai fourni tous les éléments, juste, l'url de la page concernée : http://www.liinkz.net

    N'hésitez pas à me demander plus d'infos, merci par avance

    EDIT 1 : Lorsque je met _nopriv_ dans le add_action(), ça marche sur firefox et pas sur chrome. Quand je retire _nopriv_, c'est l'inverse...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    ok, au vu de mon dernier EDIT 1, j'ai effectué une recherche sur nopriv wordpress, et il s'avère que l'on peut aisément déclarer deux add_action pour la même fonction comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    add_action("wp_ajax_ajax_add_user", "ajax_add_user");
    add_action("wp_ajax_nopriv_ajax_add_user", "ajax_add_user");
     
    function ajax_add_user(){
        /* Contenu de la fonction... */
    }
    Du coup, avec cette dernière solution, tout marche niquel.

    Merci quand même, je met ce post pour en aider d'autres see ya !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/04/2012, 21h54
  2. Affichage different selon navigateur
    Par zainemusic dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 01/02/2007, 00h01
  3. Réponses: 3
    Dernier message: 23/05/2006, 20h17
  4. [CSS] fichiers css selon navigateur
    Par ph_anrys dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 23/02/2006, 14h21
  5. Longueur des champs password et text selon navigateur
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 15/11/2005, 22h03

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