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

dinolam81 Messages postés 9 Date d'inscription lundi 30 décembre 2013 Statut Membre Dernière intervention 20 septembre 2016 - Modifié par dinolam81 le 20/06/2016 à 16:56
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 - 1 juil. 2016 à 13:53
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();
}
});
}
});
});


Merci par avance !

1 réponse

cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
1 juil. 2016 à 13:53
Bonjour,

Sans regarder plus loin, ton code

$('.form').prepend('<div class ...


fait reference a une classe form que l'on ne trouve pas dans ton html.

de plus si tu fais reference a une classe le jquery attend de 0 à plusieurs elements.

donc a mon avis, tu dois mettre :

$('.myform')[0].prepend('<div class ...



ou plus simple sans ta classe avec le nom de la balise (sans le point)

$('form')[0].prepend('<div class ...



Pas testé mais me semble logique.

Bonne journée
0
Rejoignez-nous