Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Wordpress][AJAX/jQuery] Problème récup $_POST

Les données $_POST n'existent pas !

    27 juillet 2015 à 20:48:55

    Bonjour, 

     Je viens ici en homme désespéré ! J'ai voulu rendre mon plugin Wordpress de messagerie interne plus fluide en intégrant AJAX. Sur Wordpress, Ajax fonctionne avec jQuery, mon problème est lorsque l'on envoie un e-mail, on fait appel à une fonction javascript qui va faire un appel à une fonction qui va envoyer le message... Mais le problème est que la fonction d'envoie vérifie si les données ont bien été transmises... Et en l'occurence, et bien isset($_POST['desti']) ou isset($_REQUEST['desti']) ne marche pas ! Voici mon code :

    Script :

    	jQuery('#send_mail').submit(function (e) {
    	 e.preventDefault(); // Le navigateur ne peut pas envoyer le formulaire
    
        var donnees = jQuery(this).serialize(); // On créer une variable content le formulaire sérialisé
    	 
    	alert(donnees.substring(8));
    	console.log('hello');
    	jQuery.ajax({
    		url : ajaxurl,
    		type : 'POST',
    		cache: false,
    		data : '?action=send_mail&' + donnees,
    
    	      success : function(code_html, statut){
    		  alert(code_html);
               jQuery(code_html).appendTo("#composition"); // On passe code_html à jQuery() qui va nous créer l'arbre DOM !
           },
    	
    	
    	
    	});
    });
    


    PHP du plugin :

    		add_action('wp_enqueue_scripts', 'ajax_test_enqueue_scripts');
    		add_action('wp_ajax_send_mail', 'send_mail' );
    function send_mail()
    {
    echo '<script>alert(\'hello\');</script>';
    
    if (isset($_REQUEST['desti']))
    	{
    	?>
    	<?php
    	echo '<script>alert(\'script correct\');</script>';
    	global $wpdb;
    			
    			if (empty($_POST['obj']))
    			{
    					$obj = 'No Subject';
    			}
    			else
    			{
    					$obj = $_POST['obj'];
    			}
    			$test = $wpdb->get_var($wpdb->prepare('SELECT can_mail FROM wp_users WHERE id = %d', get_current_user_id()));
    		 if (isset($_POST['envoie']))
    			{
    					$folder = 'inbox';
    					if ( $test == 0 && $_POST['desti'] != 1)
    					{
    				 $folder = 'draft';
    					echo '<script>alert(\'Vous n\\\'êtes pas autorisé à envoyer des messages, votre mail va être sauvegardé dans les brouillons.\n Merci de contacter votre administrateur par e-mail : admin.\');</script>';
    					}
    			}
    			else
    			{
    					$folder = 'draft';
    					
    			}
    			
    			
    
    			if (isset($_POST['id_mess']) && isset($_POST['brouillon']))
    			{
    		
    					$wpdb->update('wp_messagerie', array('receiver' => $_POST['desti'], 'objet' => $obj, 'message' => $_POST['mess']), array('id' => $_POST['id_mess']), array('%d', '%s', '%s'), array('%d', '%s', '%s'));
    					$wpdb->query('UPDATE wp_messagerie SET date_envoi = NOW() WHERE id = ' . $_POST['id_mess']);
    			}
    			else
    			{
    					$response = $wpdb->query($wpdb->prepare('INSERT INTO wp_messagerie(sender, receiver, unread, objet, message, date_envoi, dossier) VALUES (%d, %d, 1, %s, %s, NOW(), %s);', get_current_user_id(), $_POST['desti'], $obj, $_POST['mess'], $folder));
    					
    					if (isset($_POST['id_mess']) && isset($_POST['envoie']))
    					{
    							$wpdb->query($wpdb->prepare('DELETE FROM wp_messagerie WHERE id = %d', $_POST['id_mess']));
    					}
    			}
    			
    	 	echo '?page=messagerie&action=inbox';
    			die();
    	}
    	wp_die();
    	}
    		
    
    function ajax_test_enqueue_scripts() {
    
    	wp_enqueue_script( 'script_send', plugins_url( '/script_send.js', __FILE__ ), array('jquery'), '1.0', true );
    
    	wp_localize_script( 'script_send', 'script', array(
    		'ajax_url' => admin_url( 'admin-ajax.php' )
    	));
    
    }

    Voilà, j'espère que vous pourrez m'aider ! Parce que lorsque que je regarde dans la requête POST effectué, les données sont bien transmises...

    • Partager sur Facebook
    • Partager sur Twitter

    [Wordpress][AJAX/jQuery] Problème récup $_POST

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown