我不明白爲什麼req.body是未定義的。它總是訪問node.js server'/ formstuff'中的函數,但req.body是未定義的。Node.js,express,html form req.body is undefined
當我看到它發佈到cmd的結果時,我在任何地方都看不到我的查詢。事實上res.query和res.params是空的。
任何幫助,將不勝感激,謝謝。
快遞:
var express = require('express'),
app = express();
var fs = require('fs');
var Promise = require('promise');
// Handle Get Request
app.get('/', function(req, res){
// get stuff from request
var index;
fs.readFile('./form.html', function (err, data) {
if (err) {
throw err;
}
index = data;
res.setHeader("Content-Type", "text/html");
res.send(index);
});
});
app.post('/formstuff', function(req, res){
console.log(req.body);
res.send();
});
HTML:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<style type = "text/css">
body
{
margin:0;
}
#head
{
width:100%;
color:#FAFAFA;
height:170px;
text-shadow: 2px 2px 0px rgba(150, 150, 150, 1);
background: #39d800; /* Old browsers */
background: -moz-linear-gradient(top, #39d800 0%, #00a008 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#39d800), color-stop(100%,#00a008)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #39d800 0%,#00a008 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #39d800 0%,#00a008 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #39d800 0%,#00a008 100%); /* IE10+ */
background: linear-gradient(to bottom, #39d800 0%,#00a008 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#39d800', endColorstr='#00a008',GradientType=0); /* IE6-9 */
font-family: Brush Script MT;
font-weight:bold;
font-size:8.5em;
text-align:center;
}
form div
{
padding:0.8%;
}
fieldset
{
font-size: 2em;
position:relative;
}
input
{
width: 150px;
height: 50px;
font-size: 1.2em;
clear:both;
}
</style>
</head>
<body>
<div id = "head">Notifye</div><br>
<br>
<fieldset>
<legend>Search</legend>
<form name = "form" method = "post" action = "http://127.0.0.1:3000/formstuff">
<input type="text" required = "required" name = "tag" placeholder = "lolcats">
<div><input type = "submit" name = "submit" value = "Submit" id = "sub"></div>
</form>
</fieldset>
</body>
安裝之後,它會引發錯誤,指出它無法找到模塊的「body-parser」。我檢查了它,並且在我安裝它之後它確實存在於節點模塊文件夾中。 – 2014-12-01 21:46:18
適用於各種版本的Express(例如3.x以上)。確保你在這裏找到的例子如下:https://github.com/expressjs/body-parser – martenc 2014-12-01 22:04:55