无法使用快递发布/出错

新手上路,请多包涵

我正在尝试使用 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);

提交表单后,我不断收到错误“CANNOT POST /”。我错过了像模块这样的东西吗?

原文由 dtem052996 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 545
2 个回答

这种方式你应该尝试

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);

您应该记住的事项以供将来参考:

  1. 您正在将 url 编码扩展到 true
  2. 您没有任何获取表单的请求
  3. 您使用的是 HTML 命名变量,这是一种不好的做法

原文由 Amulya Kashyap 发布,翻译遵循 CC BY-SA 4.0 许可协议

就我而言,我没有注意我发布的网址。

我有页面登录 http://localhost:5000/login 正在发布,如果成功,则呈现页面帐户 http://localhost:5000/account

但是,在这两个页面上播放了几次,链接仍然在 http://localhost:5000/account 但显示了登录页面。因此,当我单击带有 formmethod = "post" 的登录按钮时,出现错误 Cannot POST /account

因此,解决方法是通过输入登录页面的 URL http://localhost:5000/login 来正确呈现登录页面。

原文由 Gabriel Arghire 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏