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 :
source de ce code : http://fr.slideshare.net/nicolasjuen...ress?player=js , sur le slide 24
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'); } } ?>
Ensuite, j'utilise le plugin wp-recaptcha dernière version (le recaptcha marche bien).
le jQuery utilisé :
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
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);
Voilà, il me semble que j'ai fourni tous les éléments, juste, l'url de la page concernée : http://www.liinkz.net
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(); }
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...
Partager