Bonjour et désolé pour le titre qui n'est pas terrible, je vais décrire mon problème.
Pour mettre dans la situation, j'ai une page avec plusieurs formulaires dans des div qui apparaisse selon la sélection de l'utilisateur.
Au total j'ai 3x7 formulaires avec donc autant de bouton pour les soumettre.
je ne souhaite pas charger une page à chaque validation d'un formulaire donc je suis passé par ajax : via script jquery, je capture le clic sur le bouton, je fait ma requête via ajax et je retourne le résultat.
ce qui donne côté code :
HTML:
JQUERY:
ça marche très bien, quand le clic sur le bouton pour valider, ma page ne bouge pas et j'ai mon résultat qui s'affiche nickel mais faire ce code x 21... ça va être un peu lourd^^
De ce fait, je souhaite faire UNE fonction qui gère le tout avec des switch and co. j'ai fait ceci :
HTML:
JQUERY:
Résultat :
Quand je clic sur un bouton, le script me soumet bien le bon formulaire (en passant via le script, testé avec des alert) mais il me charge la page testjquery.php au lieu de passer par ajax.
Personnellement, je ne vois pas pourquoi... Si quelqu'un peu m'aider, ça serré vraiment le top
Merci d'avance
Modifié par elihos (05 Jun 2012 - 09:31)
Pour mettre dans la situation, j'ai une page avec plusieurs formulaires dans des div qui apparaisse selon la sélection de l'utilisateur.
Au total j'ai 3x7 formulaires avec donc autant de bouton pour les soumettre.
je ne souhaite pas charger une page à chaque validation d'un formulaire donc je suis passé par ajax : via script jquery, je capture le clic sur le bouton, je fait ma requête via ajax et je retourne le résultat.
ce qui donne côté code :
HTML:
<form id="ajout_mot_clef" method="post" action="testjquery.php">
<input type="hidden" name="action" value="add">
<input type="hidden" name="type" value="mot_clef">
<label>Nouveau mot clef : </label>
<input type="text" id ="mot_clef" name="mot_clef" size="20" maxlength="30" value="">
<input id="add_mot_clef" type="submit" name="add_mot_clef" value="Ajouter le mot clef">
</form>
JQUERY:
$(document).ready(function() {
var $form = $('#ajout_mot_clef');
$('#add_mot_clef').on('click', function() {
$form.trigger('submit');
return false;
});
$form.on('submit', function() {
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
dataType: 'json',
success: function(json) {
if(json.retour == 'ok') {
alert('Mot clef ajout\351e avec succ\350s.');
} else if(json.retour == 'erreur') {
alert('Erreur : cette entr\351e existe d\351j\340 dans la table');
} else {
alert('Erreur : '+ json.reponse);
}
}
});
return false;
});
});
ça marche très bien, quand le clic sur le bouton pour valider, ma page ne bouge pas et j'ai mon résultat qui s'affiche nickel mais faire ce code x 21... ça va être un peu lourd^^
De ce fait, je souhaite faire UNE fonction qui gère le tout avec des switch and co. j'ai fait ceci :
HTML:
<!--Premier form-->
<form id="ajout_meta" method="post" action="testjquery.php">
<!--Blablabla le code de son contenu-->
<input id="add_meta" class="envoi" type="submit" value="Ajouter">
</form>
<!--Second form-->
<form id="ajout_mot_clef" method="post" action="testjquery.php">
<!--Blablabla le code de son contenu-->
<input id="add_mot_clef" class="envoi" type="submit" name="add_mot_clef" value="Ajouter le mot clef">
</form>
JQUERY:
$(document).ready(function() {
$(".envoi").on('click', function() { // Capture du clic par la class
var id_envoi = (this.id); // On récupère l'id du bouton cliqué
switch(id_envoi) // on switch sur l'id
{
case 'add_meta': // Si id du bouton = add_meta
$form = $('#ajout_meta'); // le formulaire à soumettre est ajout_meta
break;
case 'add_mot_clef': // Si id du bouton = add_mot_clef
$form = $('#ajout_mot_clef'); // le formulaire à soumettre est ajout_mot_clef
break;
}
$form.trigger('submit'); // on soumet le formulaire
return false; // normalement empèche la page de soumettre elle même (il me semble)
});
$form.on('submit', function() {
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
dataType: 'json',
success: function(json) {
if(json.retour == 'ok') {
alert('Ajout\351e avec succ\350s.');
} else if(json.retour == 'erreur') {
alert('Erreur : cette entr\351e existe d\351j\340 dans la table');
} else {
alert('Erreur : '+ json.reponse);
}
}
});
return false;
});
});
Résultat :
Quand je clic sur un bouton, le script me soumet bien le bon formulaire (en passant via le script, testé avec des alert) mais il me charge la page testjquery.php au lieu de passer par ajax.
Personnellement, je ne vois pas pourquoi... Si quelqu'un peu m'aider, ça serré vraiment le top

Merci d'avance

Modifié par elihos (05 Jun 2012 - 09:31)