dro*_*ers 3 javascript node.js express
我目前正在使用 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);
Run Code Online (Sandbox Code Playgroud)
这是后处理的代码
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);
});
Run Code Online (Sandbox Code Playgroud)
当我在 localhost:8080/detailed 中发布内容时,hello world 返回得很好,但 req.body 为空(返回为 {})。displayDetailed 函数是一个自定义函数,它返回一个 html 字符串,其中包含从来自 google sheet API 的 get 请求中提取的值。由于我没有使用保存的 html 文档,这会影响流程吗?
大多数时候 req.body 由于缺少 JSON 解析器而未定义
const express = require('express');
app.use(express.json());
Run Code Online (Sandbox Code Playgroud)
身体解析器可能会丢失
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));
Run Code Online (Sandbox Code Playgroud)
有时由于 cro 来源而未定义,因此添加它们
const cors = require('cors');
app.use(cors())
Run Code Online (Sandbox Code Playgroud)