Sujet : Récupérer valeurs des inputs dans une boucle - jQuery

Bonjour,

Je travaille sur un module de messagerie (question-réponse). J'ai un formulaire de réponse que j'affiche dans une boucle avec des informations que je récupère dans la base de données sur des inputs de type hidden. Mon problème je n'arrive pas à récupérer mes infos en jQuery-Ajax. J'ai Undefined à la place de mes valeurs.
Ci-dessous le code :

// HTML
<form method="post" action="actionReponse.php" class="myform">
        <textarea name="message[<?=isset($_POST['message'])?$_POST['message']:'';?>]" class="message" value="<?=isset($_POST['message'])?$_POST['message']:'';?>"></textarea>
 
         <input type="submit" value="Envoyer">
 
         <input type="hidden" name="question_id[<?=$row['question_id'];?>]" class="question" value="<?=isset($row['question_id'])?$row['question_id']:'';?>">
         <input type="hidden" name="user_name[<?=$_SESSION['user_name'];?>]" class="user_name" value="<?=isset($_SESSION['user_name'])?$_SESSION['user_name']:'';?>">
         <input type="hidden" name="date[<?=date('d/m/Y H:i:s');?>]"    class="date" value="<?=date('d/m/Y H:i:s');?>">
</form>
//  jQuery
$(document).ready(function() {
    $('.myform').on('submit', function(e) {
        e.preventDefault();
 
        var $this = $(this);

        var message, question, user_name, date;

        $('.message ').each(function() {
             message  = $('.message', this).val();
        });
         $('.question').each(function() {
             question = $('.question', this).next().val();
        });
        $('.user_name').each(function() {
            user_name = $('.user_name', this).val();
        });
        $('.date').each(function() {
            date = $('.date', this).val();
        });
 
        if (message === '' || question === '' || user_name === '' || date === '') {
             $('#status').html('<p class="error">Champ invalide</p>');
        } else {
            $.ajax({
                url: 'ActionReponse.php',
                type: 'POST',
                data: $this.serialize(),
                ContentType: 'application/x-www-form-urlencoded; charset=UTF-8',
                beforeSend: function() {
                    $this.after('<span id="load4"><img src="inc/img/loader.gif" alt="loading"> Chargement...</span>');
                },
                success: function(data){
                    $('#load4').remove();
 
                    $('.form').prepend('<div class="reponse"><p>'+message+'</p><p>Par '+user_name+', le '+date+'</p></div>').hide().slideDown();
                }
            });
        }
    });
});