11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous et merci d'avance pour votre aide.

J'ai plusieurs formulaire dans mon site et j'aimerais référencer une seul page PHP dans l'attribut action de mes forms. Ensuite dans mon fichier php récupérer le nom du form approprié pour le traité. Sauf qu'en passant par $.ajax je ne parvient pas à récupérer le nom du form.


<form method="post" action="include/class_sending.php" name="frm_contact" id="frm_contact" onsubmit="return postSending('frm_contact')">
<input name="bt_contact" id="bt_contact" type="submit" class="button blue medium"  value="Envoyer"/>
</form>


	// appel Ajax
	$.ajax({
	url: $('#'+origin).attr('action'), type: $('#'+origin).attr('method'),
data: $('#'+origin).serialize(), 	
	success: function(feedBackPHP) { 
	if(feedBackPHP == 'SUCESS'){
			$('#div_sucess').fadeIn(250);
			$('#div_sucess').append('<br/><p align="center">Requ&ecirc;te enregistr&eacute; sous</p><h3>'+$('#frm_idOrder').val()+'</h3>')
			$('#div_form').attr('disabled','disabled').fadeTo(250,0.3);
			$('#frm_prev').css('opacity','0.2').attr('disabled','disabled');
			}else{
 
 
			$('#frm_prev').css('opacity','1').removeAttr('disabled');
			$('#div_error p').html(feedBackPHP);
			$('#div_error').fadeIn(250);			
		}
	}
	});  
 
	return false;



if (isset($_POST['bt_contact'])){
echo 'bt_contact';
} elseif (isset($_POST['bt_order'])){
echo 'bt_order';
}else{echo 'error';}



A mon sens le probléme ne vient que de $.Ajax dans la mesure ou si j'enleve 'return' du onSubmit de ma form. J'obtient bien mon echo 'bt_contact'. Dans le cas contraire j'obtient 'error'

Merci à vous.
Salut,

Personnellement j'ai pas bien cerné ton problème...
Essaye de passer plutôt par un input "type button" au lieu d'un submit, et place l'appel à ta fonction dans l'attribut onclick de cet input.

Autre point, je peux te conseiller d'améliorer certains points de ton JS.
Tu fais plusieurs fois :
$('#'+origin).uneMethode()
Essaye donc de factoriser ça et de placer une variable de la sorte. Ça évitera à ton script d’appeler à chaque fois la méthode $() pour créer un objet jQuery.
var $origin = $('#'+origin);
$.ajax({
	url: $origin.attr('action'), 
        type: $origin.attr('method'),
        data: $origin.serialize(), [...]

Bonne journée.
Merci pour ta réponse.

J'ai apporté les modifications que tu m'a conseillé.
J'ai certainement mal énoncé mon probléme.

J'ai plusieurs formulaires dans mon site et une page PHP pour l'envoie de ces formulaires. Je récupére le nom du <form> approprié pour traité l'envoie.

if (isset($_POST['bt_contact'])){
echo 'ceci est le formulaire contact';
} elseif (isset($_POST['bt_order'])){
echo 'ceci est le formulaire de réservation';
}else{echo 'error';}


Sauf qu'en passant par $.ajax je ne parvient pas à récupérer le nom du <form>. Je reçois en retour 'error'.

J'ai placé en commentaire mon code pour l'envoie en AJAX.
La par contre je reçois bien le message 'ceci est le f...' de mon fichier PHP.

Comment passer le nom du formulaire en ajax?
Modifié par Rifton007 (02 Nov 2012 - 14:39)
Voici la solution,
Elle consiste à ajouter une valeur avec le nom du formulaire dans la propriété data: de $.Ajax.

...
data: $('#'+idForm).serialize() + "&nameForm=" + $('#'+idForm).attr('name'),
...

if ($_POST['nameForm'] == 'frm_contact'){...}


Encore merci de ton aide JuJu57.
Modifié par Rifton007 (02 Nov 2012 - 22:59)