我的客户端代码:
Document
我的服务器端代码:
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')
});
首先请记住,我是后端新手。当我尝试 console.log 记录的数据时,它返回一个空对象,我无法理解为什么我的 req.body 返回一个空对象,但是当我尝试通过给出 action:"/login" 和方法来执行相同操作时:表单标签内的“post”它按预期工作并为我提供我提供的输入。请有人帮助我,我的头在燃烧,提前谢谢你。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
req.body是空的,因为当您使用axios发送它时,您实际上发送的是 JSON (application/json) 负载,并且后端没有 JSON 负载解析器,只有 URL 编码,而HTML 表单以application/x-www-form-urlencoded格式发送它,这就是它起作用的原因。因此,您需要使用 axios 发送 URL 编码的请求,您可以使用
URLSearchParams将 JSON 对象转换为查询字符串。试试这个。axios .post("http://localhost:8080/login", new URLSearchParams(formObject))或者,只需在后端添加一个 JSON 解析器,您的原始 JSON 请求就可以工作,使用内置解析器: