我开始使用nodejs并表达构建一个非常简单的应用程序。
到目前为止,我正在运行一个网络服务器并为我的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>
答案 0 :(得分:1)
首先,忘记bodyParser
中间件,自4.16起,json
和urlencoded
解析器都已包含在express中。
https://github.com/expressjs/express/releases/tag/4.16.0
然后,你没有AJAX调用,而是一个简单的表单,因此这是无效的
app.use(bodyParser.json());
有无
app.use(express.urlencoded({extended:true}));
最后,在您的路由中,只读取解析中间件附加到请求的body
对象的POSTed值
//POST route
app.post('/', function(req, res) {
var subject = req.body.subject;
var message = req.body.message;
});