Bonjour à tous,
Un fichier HLML envoyé à un client, permet la saisie de données de type texte.
A la fin de la saisie, un bouton permet la lecture des données et les stocke dans une variable String (msg), puis envoit le contenu de cette variable vers le serveur par un POST.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 let listeBouton = document.querySelectorAll(".bouton"); //tous les boutons de la page listeBouton.forEach(function(k){ k.addEventListener("click", function(f){ touche = f.target.innerHTML; //debut de la saisie if(touche=="RAM"){ lectureSaisie(); //ecriture en RAM prgServeur("/API?Cmd=2AA"); sauvegardeOk=true; //window.close(); }......Mon problème: la réponse est vide et si je consule la console log de chrome, j'ai ces messages:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //************************envoi de la saisie********************************************** function prgServeur(url){ fetch(url, { method: 'POST', headers:{"Content-Type": "Text/Plain"}, body: msg }) .then(response => response.text()) .then(response => alert(response)) .catch(err => console.log(err)); }
Donc, tout laisse à penser qu'il y a un problème côté serveur, ce que m'a confirmé NOSMOKING sur le forum Javascript.
Côté serveur, j'utilise la librairie ESPAsyncWebServer:
A vrai dire, je ne suis pas sûr du tout que cette syntaxe soit bonne. Est-ce la bonne façon d'accuser réception? Est-ce la bonne façon de récupérer les données?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 //****API**** serveur.on("/API?Cmd=2AA", HTTP_POST, [](AsyncWebServerRequest *req){ req->send(200, "text/plain", "OK"); String x = req->getHeader(x)->value(); afficLcd2String(x,""); String message = req->getParam(message)->value(); afficLcd2String(message,""); delai('s',5); });
Merci d'un coup de main.
J'ai trouver mon problème:
J'utile l'URL "API" pour faire le POST mais je l'utilise aussi pour des GET ce qui doit procurer une incompréhension du serveur.
J'ai simplement mis "Toto" à la place et cela a fonctionné.
Désolé pour le dérangement
Partager