Code : Tout sélectionner
$(document).ready(function() {
// Lorsque je soumets le formulaire
$('#contactform').on('submit', function(e) {
e.preventDefault(); // J'empêche le comportement par défaut du navigateur, c-à-d de soumettre le formulaire
var $this = $(this); // L'objet jQuery du formulaire
// Je récupère les valeurs
var nom = $('#nom').val();
var prenom = $('#prenom').val();
// Je vérifie une première fois pour ne pas lancer la requête HTTP
// si je sais que mon PHP renverra une erreur
if( nom === '' || prenom === '') {
alert('Les champs doivent êtres remplis');
} else {
// Envoi de la requête HTTP en mode asynchrone
$.ajax({
url: $this.attr('./contact.php'), // Le nom du fichier indiqué dans le formulaire
type: $this.attr('post'), // La méthode indiquée dans le formulaire (get ou post)
data: $this.serialize(), // Je sérialise les données (j'envoie toutes les valeurs présentes dans le formulaire)
success: function(msg) { // Je récupère la réponse du fichier PHP
alert(msg); // J'affiche cette réponse
if (msg=="1") {
$('#contactform').hide();
$('#contactform-final').show();
$('#simulation-failed').show();
} else {
$('#contactform').show();
$('#contactform-final').hide();
$('#simulation-failed').hide();
}
// La fonction à appeler si la requête n'a pas abouti
error: function() {
// J'affiche un message d'erreur
alert('Désolé, aucun résultat trouvé');
} );
//}
});
Code : Tout sélectionner
url: $this.attr('./contact.php'), // Le nom du fichier indiqué dans le formulaire
type: $this.attr('post'), // var form = $(this);
$.ajax({
url: './contact.php', // Le nom du fichier indiqué dans le formulaire
type:'post', // La méthode indiquée dans le formulaire (get ou post)
data: form.serialize(), // Je sérialise les données (j'envoie toutes les valeurs présentes dans le formulaire)
success: function(msg) { // Je récupère la réponse du fichier PHP
if (msg == "1") {
$('#contactform').hide();
$('#contactform-final').show();
$('#simulation-failed').show();
} else {
// il est pas déjà affiché ton formulaire ? :)
$('#contactform').show();
$('#contactform-final').hide();
$('#simulation-failed').hide();
}
},
// La fonction à appeler si la requête n'a pas abouti
error: function() {
// J'affiche un message d'erreur
alert('Désolé, aucun résultat trouvé');
}
});
@+Merci Moogli, comment alors pour que lorsque je clique sur mon bouton submit du formulaire , je puisse activer le JS est ce qu'il ne faudrait pas rajouter $(document).ready( function () {salut,
ouvre les outils de dev pour voir ce que le navigateur envoi et ce que répond php.
coté JS c'est moyen , je pense que tu n'as pas compris a quoi sert la fonction attr
ceci ne peux fonctionnersi tu connais déjà les valeurs tu n'as pas besoin d'essayer de les récupérer met les directement.Code : Tout sélectionner
url: $this.attr('./contact.php'), // Le nom du fichier indiqué dans le formulaire type: $this.attr('post'), //
juste pour info ton code JS n'est pas valide vu qu'il manque une } fermante pour la fonction success.
var $this = $(this); // L'objet jQuery du formulaire on évite this représente quelque chose.
ensuite c'est du JS pas du PHP t'es pas obligé de mettre un $
var form = $(this); // L'objet jQuery du formulaire
en gros ça peux donner ça@+var form = $(this); $.ajax({ url: './contact.php', // Le nom du fichier indiqué dans le formulaire type:'post', // La méthode indiquée dans le formulaire (get ou post) data: form.serialize(), // Je sérialise les données (j'envoie toutes les valeurs présentes dans le formulaire) success: function(msg) { // Je récupère la réponse du fichier PHP if (msg == "1") { $('#contactform').hide(); $('#contactform-final').show(); $('#simulation-failed').show(); } else { // il est pas déjà affiché ton formulaire ? :) $('#contactform').show(); $('#contactform-final').hide(); $('#simulation-failed').hide(); } }, // La fonction à appeler si la requête n'a pas abouti error: function() { // J'affiche un message d'erreur alert('Désolé, aucun résultat trouvé'); } });
Code : Tout sélectionner
var form = $(this);
$.ajax({
url: './contact.php', // Le nom du fichier indiqué dans le formulaire
type:'post', // La méthode indiquée dans le formulaire (get ou post)
data: form.serialize(), // Je sérialise les données (j'envoie toutes les valeurs présentes dans le formulaire)
success: function(msg) { // Je récupère la réponse du fichier PHP
if (msg == "1") {
$('#contactform').hide();
$('#contactform-final').show();
$('#simulation-failed').show();
} else {
// il est pas déjà affiché ton formulaire ? :)
$('#contactform').show();
$('#contactform-final').hide();
$('#simulation-failed').hide();
}
},
<!Doctype html>
<html>
<head>
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// Lorsque je soumets le formulaire
$('#contactform').on('submit', function(e) {
e.preventDefault(); // J'emp�che le comportement par d�faut du navigateur, c-�-d de soumettre le formulaire
var form = $(this); // L'objet jQuery du formulaire
// Je r�cup�re les valeurs
var nom = $('#nom').val();
var prenom = $('#prenom').val();
// Je v�rifie une premi�re fois pour ne pas lancer la requ�te HTTP
// si je sais que mon PHP renverra une erreur
if( nom === '' || prenom === '') {
alert('Les champs doivent �tres remplis');
} else {
// Envoi de la requ�te HTTP en mode asynchrone
$.ajax({
url: './contact.php', // Le nom du fichier indiqu� dans le formulaire
method:'post', // La m�thode indiqu�e dans le formulaire (get ou post)
data: {nom:nom,prenom:prenom},
success: function(msg) { // Je r�cup�re la r�ponse du fichier PHP
if (msg == "1") {
$('#contactform').hide();
$('#contactform-final').show();
$('#simulation-failed').show();
} else {
// il est pas d�j� affich� ton formulaire ? :)
$('#contactform').show();
$('#contactform-final').hide();
$('#simulation-failed').hide();
}
},
error: function() {
// J'affiche un message d'erreur
alert('D�sol�, aucun r�sultat trouv�');
}
});
}
});
});
</script>
</head>
<body>
<form id="contactform">
name : <input id="nom"><br />
firstname : <input id="prenom"/><br/>
<input type="submit" value="clic me baby"/>
</form>
<div id="contactform-final" style="display:none">
<h1>contactform-final</h1>
</div>
<div id="simulation-failed" style="display:none">
<h1>simulation-failed</h1>
</div>
</body>
</html>
je te conseil quand même de (re)voir des tutos sur le sujet, en copiant la doc cela fonctionne