节点JS将用户输入保存到文本文件中

时间:2018-02-12 10:00:50

标签: javascript html node.js

我有一个运行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"/>

2 个答案:

答案 0 :(得分:1)

问题1

app.use(bodyParser.json());

您的表单以application/x-www-form-urlencoded格式提交数据,而不是JSON。

您需要一个可以处理application/x-www-form-urlencoded的正文解析器。

请参阅bodyParser.urlencoded([options])

app.use(bodyParser.urlencoded());

问题2

您有名为optionsubmit的输入,但您正在寻找名为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\