【问题标题】:POST value of form via click on submit button (express)通过单击提交按钮(快速)发布表单的值
【发布时间】:2018-04-04 09:16:18
【问题描述】:

我开始使用 nodejs 和 express 来构建一个非常简单的应用程序。

到目前为止,我正在运行一个网络服务器并为我的 index.html 添加了一个 app.get 路由,它显示了两个表单和一个提交按钮。

我希望能够在两种表单中键入一个字符串,单击提交按钮,然后在我的服务器上使用这两个字符串(使用表单中的这两个字符串调用一个函数)。

服务器:

var express = require('express');
var app = express();

//body-parser -> not sure if thats the right approach...
var bodyParser = require('body-parser');
app.use(bodyParser.json());


 /* servers main page */
 app.get("/", function(req, res) {
    res.sendFile(__dirname + '/index.html');
 });


//POST route
app.post('/', function(req, res) {


//goal: user types string in both forms, clicks submit, values are being 
//received from server to call a function using those strings



});

 var port = process.env.PORT || 1337;
 app.listen(port, function() {
console.log("Listening on " + port);
 });

HTML:

<form action="" method="POST">
   Subject:<br>
   <input type="text" name="subject" value="default"><br>
   Message:<br>
   <input type="text" name="message" value="default"><br><br>
   <input  type="submit" name="submit" value="Submit">
</form>

【问题讨论】:

标签: node.js express


【解决方案1】:

首先,忘记 bodyParser 中间件,jsonurlencoded 解析器自 4.16 以来都包含在 express 中

https://github.com/expressjs/express/releases/tag/4.16.0

那么,你没有 AJAX 调用,而是一个简单的表单,因此这是无效的

app.use(bodyParser.json());

app.use(express.urlencoded({extended:true}));

最后,在您的路由中,只需从解析中间件附加到请求的 body 对象中读取 POST 值

//POST route
app.post('/', function(req, res) {

   var subject = req.body.subject;
   var message = req.body.message;

});

【讨论】:

  • 谢谢,效果很好。我预计可能需要某种 onclick-event 或类似的东西......太棒了。
猜你喜欢
  • 1970-01-01
  • 2013-09-01
  • 2020-12-03
  • 2014-04-30
  • 2014-10-28
  • 1970-01-01
  • 2011-07-09
  • 2020-05-20
相关资源
最近更新 更多