从 Express.js 中的 jade 传递表单数据

Pass form data from jade in Express.js

我有以下 express.js 小应用程序和相应的 .jade 文件。服务器 运行 没有错误,但是当我提交按钮时,没有任何反应。我希望 app.post(...) 被调用,但它没有被调用。

谁能指出我的错误?

var express = require('express');
var http = require('http');
var bodyParser = require ('body-parser');

var app = express();


var port = process.env.PORT || 9250;
var host = process.env.HOST || "127.0.0.1";

var server = http.createServer(app).listen(
  port,
  host,
  function() {
   console.log("Server listening to %s:%d within %s environment",
     host, port, app.get('env'));
  });


app.set('views', __dirname + '/views');
app.engine('.html', require('jade').__express);

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


app.get('/', function(req, res) {
 res.sendFile(app.get('views') + '/index.html')
});

app.get('/test', function(req, res) {

 res.render('home.jade');
});

app.post('/claim', function(req, res) {
 console.log('called');
 res.redirect('/');
});
doctype html
html(lang="en")
  head
    title Hello

  body
    h1 Welcome
    p Description

    form(action="/claim", method="post")
    label Input something
    br
    input(type="text", name="address", size=50)
    br
    input(type="submit", value="Submit")

您的问题是缩进:Jade 不理解您的 input 包含在 form 中。

试试这个,对我有用:

doctype html
html(lang="en")
  head
    title Hello

body
  h1 Welcome
  p Description

  form(action="/claim", method="post")
    label Input something
    br
    input(type="text", name="address", size=50)
    br
    input(type="submit", value="Submit")