我正在尝试使用express创建一个简单的表单处理程序。我为我的表单尝试了以下代码:
<form class="form" action="/" method="post" name="regForm">
<div class="form-group">
<input type="text" name="username" class="form-control" id="username" placeholder="Username">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
这是我的app.js代码:
const port = 3000;
var express = require('express'),
app = express(),
server = require('http').createServer(app);
var bodyParser = require('body-parser');
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.urlencoded({
extended: true;
}));
app.use(bodyParser.json());
app.post('/',function(req,res){
var username = req.body.username;
var html = 'Hello:' + username;
res.send(html);
console.log(html);
});
server.listen(port);
我一直收到错误&#34;无法发布/&#34;提交表格后。我错过了像模块这样的东西吗?
答案 0 :(得分:16)
这样你应该尝试
const port = 3000;
var express = require('express'),
app = express();
var bodyParser = require('body-parser');
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
app.get('/', function(req, res){
res.render('form');// if jade
// You should use one of line depending on type of frontend you are with
res.sendFile(__dirname + '/form.html'); //if html file is root directory
res.sendFile("index.html"); //if html file is within public directory
});
app.post('/',function(req,res){
var username = req.body.username;
var htmlData = 'Hello:' + username;
res.send(htmlData);
console.log(htmlData);
});
app.listen(port);
您应该记住以后的事情参考:
谢谢&amp;干杯强>
答案 1 :(得分:1)
似乎在这里工作正常。
我找到的唯一错误是:
extended: true;
您需要在结尾处删除分号。
此外,您不需要采取行动=&#34; /&#34;在您的表单标签中,仅供参考。
答案 2 :(得分:1)
另一种方法是我们可以使用express提供的.route方法
https://expressjs.com/en/guide/routing.html
例如:
app.route("url")
.get(function())
.post(function());
请记住使用半冒号关闭.route函数;
答案 3 :(得分:1)
就我而言,我没有注意发布的网址。
我有一个页面登录名http://localhost:5000/login
正在发布,如果成功,则呈现页面帐户http://localhost:5000/account
。
但是,在这2个页面上播放了几次,链接保持在http://localhost:5000/account
,但显示了登录页面。因此,当我单击带有form
和method = "post"
的登录按钮时,出现了错误Cannot POST /account
。
因此,解决方法是通过输入登录页面http://localhost:5000/login
的网址来正确呈现登录页面。
答案 4 :(得分:0)
You should call router instead of app
const router = express.Router();
router.use(bodyParser.urlencoded({ extended: false }));
router.post('/',function(req,res){
var username = req.body.username;
var htmlData = 'Hello:' + username;
res.send(htmlData);
console.log(htmlData);
});