我目前正在使用express设计一个简单的浏览器应用程序。我正在尝试提取用户在下拉菜单中选择的值。我还为每个选项指定了一个单独的值,并将表单的方法声明为/post。但当我尝试通过进入req.body
来选择哪个值时,该值是未定义的。
我认识到问题可能出在正文解析器无法浏览类似的问题(Example、Example1),但这些问题的解决方案并不能阻止req.body
的未定义。
下面是我构建应用程序的代码
const app = express()
app.use(express.static(__dirname, ''));
app.engine('html', require('ejs').renderFile);
app.set('views', __dirname + '/public/views');
app.use(express.urlencoded());
app.set('view engine', 'html');
const server = http.createServer(app);
下面是处理帖子的代码
app.get('/detailed', function(req,res){
res.send(displayDetailed(results, req));
});
app.post('/detailed', function(req,res){
res.send('Hello world');
console.log(req.body);
});
当我在localhost:8080/detailed中发布一些内容时,hello world返回得很好,但是req.body是一个空的(返回为{})。displayDetailed函数是一个自定义函数,它返回一个html字符串,该字符串包含从google sheets API的get请求中提取的值。由于我不是在处理已保存的html文档,这会影响进程吗?
发布于 2020-01-30 16:16:33
大多数情况下,由于缺少req.body解析器,JSON是未定义的
const express = require('express');
app.use(express.json());
可能缺少正文解析器
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));
有时,由于cros的起源,它是未定义的,所以添加它们
const cors = require('cors');
app.use(cors())
发布于 2018-05-28 23:48:06
您是否为express设置了正文解析器以供使用?您可以只安装npm的body-parser,然后将它们放入您的代码中。
const bodyParser = require('body-parser')
app.use(bodyParser.json())
希望这能有所帮助!
发布于 2018-05-29 09:00:49
当在异步函数(构造html的函数被调用的地方)外调用req.body
时,req.body
返回得非常好。我将修改我的项目来解决这个问题。我应该把这个放在原来的问题中,但当我写这个问题的时候,它似乎并不相关。感谢每一个回复的人
https://stackoverflow.com/questions/50569718
复制相似问题