node.js - Express Js 无法从 React Js 检索提交的表单数据
问题描述
我正在尝试将 React Js 中的发布数据提交到 Express,但没有数据传递到body
.
来自 React 的 App.js
function submitForm(){
axios({
url: 'http://localhost:9000/api/submit-student',
method: 'POST',
body: {name: 'John Doe'}
})
.then(() => {
console.log('Data has been saved.')
})
.catch(() => {
console.log('Internal server error')
})
}
api.js
const express = require("express");
const router = express.Router();
router.post("/submit-student", function (req, res) {
res.send(req.body)
console.log(res)
});
module.exports = router;
我在里面设置了一个测试数据body
,它将被传递给api.js
那个读取端口9000
。提交很好。唯一的问题是,req.body
返回的是一个空的 json 数组{}
。它读取Data has been saved.
消息,但console.log(res)
在正文部分显示空数组。
提交时没有出现错误。我什至尝试过邮递员,它可以检索帖子数据。
编辑
我已bodyParser
包含在我的server.js
文件中。
const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
app.use(cors())
app.use(
bodyParser.urlencoded({
extended: false
})
);
app.use(bodyParser.json());
const port = process.env.PORT || 9000;
const routes = require("./routes/api");
mongoose.connect("mongodb-url-here", {
useNewUrlParser: true
})
mongoose.connection.on('connected', ()=>{
console.log('Mongoose is connected!');
})
app.use('/api', routes);
app.listen(port, () => console.log(`Server up and running on port ${port} !`));
解决方案
body
将选项更改为data
for axios
。请参阅有关如何发送 POST 请求的文档。
api.js
:
const express = require('express');
const router = express.Router();
router.post('/submit-student', function(req, res) {
console.log(req.body);
res.send(req.body);
});
module.exports = router;
server.js
:
const express = require('express');
const cors = require('cors');
const api = require('./api');
const app = express();
const port = 9000;
app.use(cors());
app.use(express.json());
app.use('/api', api);
app.listen(port, () => console.log('server start'));
客户端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
axios({
url: 'http://localhost:9000/api/submit-student',
method: 'POST',
data: { name: 'John Doe' }
})
.then(() => {
console.log('Data has been saved.');
})
.catch(() => {
console.log('Internal server error');
});
</script>
</body>
</html>
服务器日志:
server start
{ name: 'John Doe' }
推荐阅读
- android - android.telecom.Call 的 deflect 方法有什么作用?
- bash - grep 列出文件的多个部分与中断连接
- java - 如何在 Quarkus 扩展中注入配置属性
- soap - 需要完整的肥皂请求才能在 wso2 中的声明下添加 localclaim
- python - 为在不同列中定义的每个组计算数据框中相邻行(十进制数)的差异
- linux - SSH 访问父主机文件夹
- css - reactjs自动建议建议列表与输入分离
- reactjs - 纱线构建期间出错“TS2694:命名空间'React'没有导出的成员'Context'”
- linux - 存在哪些类型的蓝牙设备?
- django - 在 django 中对另一个表执行查询,但它没有找到该表