Bonjour tout le monde

Je sèche sur un problème depuis ce matin

pour un site web, les visiteur(trice)s pourront mettre des commentaires sur un livre d'or. Il s'agit d'insérer les commentaires dans la base données et des les afficher sur la page
J'aimerais faire cette insertion en ajax afin d'éviter le refresh de la page.
j'utilise la biblio jQuery avec la fonction $.ajax() et le langage php pour le serveur
voici mon fichier php qui va recevoir la requête post
il revient des message d'erreur en cas d'oubli du message et du nom et sinon il insère dans la bdd en voyant un message ok:

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
30
<?php
 
$errors = [];
if(!array_key_exists('name', $_POST) || $_POST['name'] == '') {
	$errors['name'] = "name";
}
if(!array_key_exists('message', $_POST) || $_POST['message'] == '') {
	$errors['message'] = "message";
}
 
if (empty($errors)){
 
	$matableTable = App::getInstance()->getTable('Matable');
 
	$nom = $_POST['name'];
	$message = $_POST['message'];
 
 
	$matableTable->create( [
 
		'titre' => $nom,
		'contenu' => $message
 
	]);
 
	$errors['ok'] = "ok";	
 
}
 
echo json_encode($errors);
si j'enlève mon App::getInstance et ma fonction create() mon dispositif fonctionne car j'ai testé en renvoyant les valeurs directement sur la page avec la fonction html() et ça fonctionne très bien

donc je suppose que c'est mon App::getInstance qui pose problème, ça me permet de faire référence à mes tables, mes fonctions enfin toute mon application php
comme erreur la console une erreur d'écriture dans un fichier json: "SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON "

si quelqu'un a des pistes ou des conseils pour la réflexion ça serait top, là je sèche
et dans mes recherches, je tombe que sur des tutos, des explications avec des fichiers php procédural avec même parfois la connection à la bdd, voir le tableau config avec le mot de passe (sic)
je sais bien qu'en mettant tout les éléments dans mon fichier et en écrivant php procédural ça va fonctionner mais au niveau sécurité c'est pas génial et si je peux laisser mon fichier php tel quel (ou presque)...

et ici je vous mets le script jquery avec la requête ajax au cas où:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 $('#form').on("keyup", function(){
 
        if ($("#name").val()!==""  && $("#message").val()!=="") {
 
 
            $("#send").removeAttr("disabled");
 
        }
        if ($("#name").val()===""  || $("#message").val()==="") {
 
 
           $("#send").attr("disabled", "disabled");
 
        }
 
    });
 
    //fonction pour envoyer le formulaire de contact en ajax
    var busy = 0;
 
    $( "#form" ).on( "submit", function( event ) {
      event.preventDefault();
      form = $(this);
 
      var name = $(this).find('#name').val();
      var message = $(this).find('#message').val();
 
        if (busy ===0) {
 
            busy = 1;
 
            $.ajax({
              type: "POST",
              url: 'http://localhost/cyril_perso/pages/admin/monFichier.php',
              data: {
 
                  name: name,
                  message: message
 
 
              },
              success: function(data) {
 
 
                    if(data.ok == "ok") {
                      $('#messageError').append("<p>super ça marche</p>")
                      form[0].reset();
                      $("#send").attr("disabled", "disabled");
                    }
                    if(data.name == "name") {
 
                      $('#messageError').append("<p>vous n'avez pas renseigné votre nom</p>")
 
                    }  
                    if(data.message == "message") {
 
                      $('#messageError').append("<p>vous n'avez pas mis de message</p>")
 
                    }
              },
              error: function(jqXHR, textStatus, errorThrown) {
              alert('An error occurred... Look at the console (F12 or Ctrl+Shift+I, Console tab) for more information!');
 
              $('#result').html('<p>status code: '+jqXHR.status+'</p><p>errorThrown: ' + errorThrown + '</p><p>jqXHR.responseText:</p><div>'+jqXHR.responseText + '</div>');
              console.log('jqXHR:');
              console.log(jqXHR);
              console.log('textStatus:');
              console.log(textStatus);
              console.log('errorThrown:');
              console.log(errorThrown);
          },
              dataType: 'json'
            });
        }
 
 
 
 
        });
merci d'avance et à bientôt

Cyril