我正在尝试使用 AJAX 通过表单发送一些值(数据),但 req.body 始终为空或值未定义
I am trying to send some values (data) by form using AJAX but req.body is always empty or value undefined
我正在尝试使用 AJAX 通过表单发送一些值(数据),但 req.body 始终为空或值未定义。
app.post('/add', urlencodedParser, function(req, res) {
console.log(req.body.email1);
console.log(req.body.name1);
console.log(req.body);
//res.render(req.body.message);
res.redirect('/todo');
});
尝试使用 json
解析器而不是 urlencoded 解析器。
var bodyParser = require('body-parser');
app.post('/add', bodyParser.json(), function (req, res) {
console.log(req.body.email1);
console.log(req.body.name1);
console.log(req.body);
//res.render(req.body.message);
res.redirect('/todo');
});
您可能通过 AJAX
调用发送了 JSON
数据,这就是 urlencoded 解析器无法解析正文的原因。更多信息:https://www.quora.com/What-exactly-does-body-parser-do-with-express-js-and-why-do-I-need-it
更新
当您将 post 数据作为 multipart/form-data
发送时,您将需要 multer
在 node.js
中解析此数据
var multer = require('multer')
var upload = multer();
app.post('/add', upload.array(), function (req, res) {
console.log(req.body);
});
使用req.param('email1')代替req.body
//这在客户端...
<script>
$(document.forms['formName']).on('submit', function(){
var form = $(this);
$.ajax({
url: "/add",
method: "POST",
data: form.serialize(),
statusCode: {
200: function(){
window.location.href = "/todo"
},
400: function(jqXHR){
//display errors
}
}
});
return false;
});
</script>
//在服务器端
app.post('/add', function (req, res, next) {
console.log(req.body.email1);
console.log(req.body.name1);
console.log(req.body);
res.status(200);
});
在您需要连接之前
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
希望对您有所帮助
如果需要,表单视图
<form name = "formName">
<fieldset class="form-group">
<label for="email1">Enter email</label>
<input type="text" class="form-control" name = "email1" id="email1" placeholder = "Enter email">
</fieldset>
<fieldset class="form-group">
<label for="name1">Enter name</label>
<input type="text" class="form-control" name="name1" id="name1" placeholder="Enter name">
</fieldset>
<button type="submit" class="btn btn-primary">Send</button>
</form>
我正在尝试使用 AJAX 通过表单发送一些值(数据),但 req.body 始终为空或值未定义。
app.post('/add', urlencodedParser, function(req, res) {
console.log(req.body.email1);
console.log(req.body.name1);
console.log(req.body);
//res.render(req.body.message);
res.redirect('/todo');
});
尝试使用 json
解析器而不是 urlencoded 解析器。
var bodyParser = require('body-parser');
app.post('/add', bodyParser.json(), function (req, res) {
console.log(req.body.email1);
console.log(req.body.name1);
console.log(req.body);
//res.render(req.body.message);
res.redirect('/todo');
});
您可能通过 AJAX
调用发送了 JSON
数据,这就是 urlencoded 解析器无法解析正文的原因。更多信息:https://www.quora.com/What-exactly-does-body-parser-do-with-express-js-and-why-do-I-need-it
更新
当您将 post 数据作为 multipart/form-data
发送时,您将需要 multer
在 node.js
var multer = require('multer')
var upload = multer();
app.post('/add', upload.array(), function (req, res) {
console.log(req.body);
});
使用req.param('email1')代替req.body
//这在客户端...
<script>
$(document.forms['formName']).on('submit', function(){
var form = $(this);
$.ajax({
url: "/add",
method: "POST",
data: form.serialize(),
statusCode: {
200: function(){
window.location.href = "/todo"
},
400: function(jqXHR){
//display errors
}
}
});
return false;
});
</script>
//在服务器端
app.post('/add', function (req, res, next) {
console.log(req.body.email1);
console.log(req.body.name1);
console.log(req.body);
res.status(200);
});
在您需要连接之前
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
希望对您有所帮助
如果需要,表单视图
<form name = "formName">
<fieldset class="form-group">
<label for="email1">Enter email</label>
<input type="text" class="form-control" name = "email1" id="email1" placeholder = "Enter email">
</fieldset>
<fieldset class="form-group">
<label for="name1">Enter name</label>
<input type="text" class="form-control" name="name1" id="name1" placeholder="Enter name">
</fieldset>
<button type="submit" class="btn btn-primary">Send</button>
</form>