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

Messages postés
9
Date d'inscription
lundi 30 décembre 2013
Dernière intervention
20 septembre 2016
-
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 !
Afficher la suite 

Votre réponse

1 réponse

Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Dernière intervention
22 juin 2017
0
Merci
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
Commenter la réponse de cgandco

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.