Bonjour à tous,
J'ai un souci avec mon code lors d'envoi d'un formulaire (traitement Ajax et PHP).
Je ne comprend pas d’où vient le problème car j'ai fait le même test ça a marché au début et subitement un problème survient après.
En effet, j'ai un formulaire avec 2 champs que je valide en ajax et php. Ma requête échoue lors de l'envoie (Statut = Aborted) sans même appeler le fichier php.
J'utilise firefox comme navigateur, il ne m'affiche aucune erreur. Sur chrome c'est pareil. Par contre sur internet explorer, j'ai ce message : (SCRIPT7002: XMLHttpRequest: Erreur réseau 0x2ef3, Impossible d'effectuer l'opération à cause de l'erreur suivante 00002ef3.).
Je ne comprend pas l'origine de ce problème.
Toute aide est la bienvenue. Merci par avance !
Ci-dessous le code du formulaire et traitements :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // Formulaire <form method="post" action="action.php" id="myform"> <input type="text" name="titre" id="titre"> <textarea name="description" id="description" rows="5" cols="50"></textarea> <input type="submit" name="valider_q" value="Valider" class="btn_valider"> <input type="hidden" name="id_valid"> </form>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 // jQuery - Ajax $(document).ready(function() { $('#myform').on('submit', function(e) { e.preventDefault(); var $this = $(this); // l'objet jquery du formulaire // Je récupère les valeurs var titre = $('#titre').val(); var description = $('#description').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(titre === '' || description === '') { document.write('Les champs doivent être remplis.'); } else { $.ajax({ url: $this.attr('action'), // Le nom du fichier indiqué dans le formulaire type: $this.attr('method'), // La méthode indiquée dans le formulaire (get ou post) data: $this.serialize(), beforeSend: function() { // traitements JS à faire AVANT l'envoi $this.after('<img src="inc/img/loader.gif" alt="loading" id="load1">'); // ajout d'un loader pour signifier l'action }, success: function(data){ $('#status').html(data).delay(10000).hide(200); } }); } });
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 // PHP require_once('db.php'); // connexion à la BD if (isset($_POST['id_valid'])) { // si le formulaire est valide if (isset($_POST['titre']) && isset($_POST['description'])) { // champs saisis $titre = $_POST['titre']))); $description = $_POST['description']; $q = array('titre'=>$titre, 'description'=>$description); $sql = "INSERT INTO question (question_titre, question_description, question_date) VALUES (:titre, :description, now())"; $req = $db->prepare($sql); $req->execute($q) or die(print_r($db->errorInfo())); $data = $req; echo '<p class="success">Message envoyé !</p>'; } else { echo 'Champs non valides'; } }
Partager