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';
    }
}