Maison > Questions et réponses > le corps du texte
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.
P粉3331862852024-04-01 09:14:42
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.
axios .post("http://localhost:8080/login", new URLSearchParams(formObject))
Alternativement, ajoutez simplement un analyseur JSON dans le backend et vos requêtes JSON brutes fonctionneront, en utilisant l'analyseur intégré :
app.use(express.json());