我有一个运行Node JS
的本地服务器。然后我有几个select
标签,我想在用户选择之后将它们保存在文本文件中?有人可以帮我解决这个问题吗? (此外,当我按提交时,我在终端上得到一个未定义的)
节点js代码:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
var port = process.env.PORT || 8000;
app.use(express.static(__dirname + '/server'));
app.use(express.static(__dirname + '/public'));
app.use('/images', express.static(__dirname +'/images'));
app.get('/', function(req, res){
res.sendfile('main.html');
});
app.listen(port, function(){
console.log('server is running on ' + port);
});
app.post('/submit', function(req, res){
console.log(req.body.rank);
});
HTML:
<form method="POST" action="/submit" > <!--action-page.php-->
<select name="option" size="1" style="width:80px;" required id="rankx">
<option value="" selected disabled hidden>Option</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<br />
<select name="option" size="1" style="width:80px;" required>
<option value="" selected disabled hidden>Rank</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="submit" value="Submit" name="submit" id="submit"/>
答案 0 :(得分:1)
app.use(bodyParser.json());
您的表单以application/x-www-form-urlencoded
格式提交数据,而不是JSON。
您需要一个可以处理application/x-www-form-urlencoded
的正文解析器。
请参阅bodyParser.urlencoded([options])
app.use(bodyParser.urlencoded());
您有名为option
和submit
的输入,但您正在寻找名为rank
的输入。
您必须将输入名称与您要查找的内容相匹配。
答案 1 :(得分:0)
在节点js文件中使用此代码
const bodyParser = require('body-parser');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded\