2017-06-21 2 views
0

私は非常にシンプルなhtmlフォームとエクスプレスサーバーを持っていますが、ルーティング作業はできません。私はいつも「投稿できません」というメッセージを受け取ります。私は何を取りこぼしたか?急行4.15.3で「Can not POST」メッセージが表示されるのはなぜですか?

var express = require('express'); 
    var bodyparser = require('body-parser'); 
    var path = require('path'); 
    var app = express(); 

    app.use(express.static("public")); 
    app.use(express.bodyParser()); 

    app.get("/", function(req, res){ 
    res.sendFile(path.join(__dirname+"/index.html")); 
    }); 

    app.post("/sendform", function(req, res){ 
    res.send('You sent the name "' + req.query.user + '".'); 
    }); 

    app.listen(3000, function(){ 
    console.log("Server is running at port: 3000"); 
    }); 


    <form method="post" action="http://localhost:3000/sendform"> 
    <input type="text" name="username" /> 
    <input type="submit" value="küldés" /> 
    </form> 

答えて

1

、あなたは少し異なるボディパーサーを使用する必要があります。 コードをこれに変更したので、投稿できました:

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

app.use(express.static("public")); 
//app.use(express.bodyParser()); 
app.use(bodyParser.json({ 
    limit: "10mb" 
})); 

app.use(bodyParser.urlencoded({ 
    limit: "10mb", 
    extended: true 
})); 


app.get("/", function (req, res) { 
    res.sendFile(path.join(__dirname + "/index.html")); 
}); 

app.post("/sendform", function (req, res) { 
    res.send('You sent the name "' + req.query.user + '".'); 
}); 

app.listen(3000, function() { 
    console.log("Server is running at port: 3000"); 
}); 
+0

最後に投稿してください!ありがとうございました。なぜこのようにする必要があるのか​​説明できますか?しかし、私のreq.query.userは未定義で返します。私はreq.body.nameで試しましたが、まだ何もありません。 – JustMatthew

+0

ミドルウェアは、あなたのコードをどのように実行していたのか分かりませんが、正確なコードでこのエラーが発生しました: 'エラー:ほとんどのミドルウェア(bodyParserなど)はもはやExpressにバンドルされていません。別途インストールしてください。 https:// github.com/senchalabs/connect#ミドルウェアを参照してください。 –

+0

[OK]を、私はそれを行うことができました。そして私はサーバを再起動しなければならなかった。もう一度ありがとうございました:) – JustMatthew

関連する問題