Mon code client :
<html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <link rel="stylesheet" href="form.css" /> </head> <body> <form action="/login" method="post" class="form"> <input type="text" name="txt" class="txt" id="txt" placeholder="name" /> <input type="submit" class="submit" id="submit" /> </form> <script defer src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> <script> let submit = document.querySelector(".submit"); const form = document.querySelector(".form"); form.addEventListener("submit", (e) => { e.preventDefault(); const formData = new FormData(form); const formObject = {}; formData.forEach((value, key) => { formObject[key] = value; }); console.log(axios.defaults) axios .post("http://localhost:8080/login", formObject) .then(function (response) { console.log(response.data); }) .catch(function (error) { console.log(error); }); }); </script> </body> </html>
Mon code côté serveur :
const app = express(); const path = require("path"); app.use(express.static('./public',{index:'form.html'})); app.use(express.urlencoded({extended:true})); app.post('/login',(req,res)=>{ //const txt = req.body; console.log('logged data: ',req.body); res.send('Thanks'); }) app.listen(8080, () => { console.log('server is running...in port 8080') });
Tout d’abord, gardez à l’esprit que je suis nouveau dans le backend. Lorsque j'essaie de console.log les données enregistrées, il renvoie un objet vide, je ne comprends pas pourquoi mon req.body renvoie un objet vide, mais lorsque j'essaie de faire de même en donnant action:"/login" et le méthode Quand : "poster" à l'intérieur de la balise form, cela fonctionne comme prévu et me donne l'entrée que je fournis. S'il vous plaît, aidez-moi, j'ai la tête qui me brûle, merci d'avance.
req.body
是空的,因为当您使用axios
发送它时,您实际上发送的是 JSON (application/json
) 负载,并且后端没有 JSON 负载解析器,只有 URL 编码,而HTML 表单以application/x-www-form-urlencoded
Envoyez-le au format, c'est pour ça que ça marche.Vous devez donc utiliser axios pour envoyer des requêtes codées en URL, vous pouvez utiliser
URLSearchParams
pour convertir l'objet JSON en une chaîne de requête. Essaye ça.Alternativement, ajoutez simplement un analyseur JSON dans le backend et vos requêtes JSON brutes fonctionneront, en utilisant l'analyseur intégré :