Javascript 为什么我的特快专递在请求正文中是空白的?nodejs
我已经检查了我的Javascript 为什么我的特快专递在请求正文中是空白的?nodejs,javascript,node.js,ajax,express,post,Javascript,Node.js,Ajax,Express,Post,我已经检查了我的数据是否正确传递,db是否已连接,但是,使用ajax它会给我返回id的成功回调 但不知何故,我的数据没有通过,当我甚至尝试req或req.body时,我发现body像这样是空白的{} 我把它作为我的html表单 <form> <label for="">Name</label> <input class="form-contro
数据
是否正确传递,db
是否已连接,但是,使用ajax
它会给我返回id的成功回调
但不知何故,我的数据没有通过,当我甚至尝试req
或req.body
时,我发现body
像这样是空白的{}
我把它作为我的html表单
<form>
<label for="">Name</label>
<input class="form-control" type="text" placeholder="Your Name" name="name">
<label for="">Email</label>
<input class="form-control" type="text" placeholder="example@hackhub.com" name="email">
<label for="">Subject</label>
<input class="form-control" type="text" placeholder="Subject" name="subject">
<label for="">Message</label>
<textarea class="form-control" placeholder="Message" id="" cols="30" rows="5" name="body"></textarea>
<input class="contact-btn" type="submit">
</form>
在我的快递里
var express = require('express');
var app = express();
var path = require('path');
var mongoose = require('mongoose');
var cors = require('cors');
var bodyParser = require('body-parser');
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
app.use(bodyParser.json());
app.post('/contact/test', function (req, res) {
var newContact = new Contact(req.body);
console.log(req);
newContact.save(function (err, doc) {
res.send(doc);
});
});
在my console.log中,我确实看到数据
成功传回,同时随机id
传回
此外,在express控制台中,我可以看到类似的内容
locals: {} },
body: {},
route:
Route {
path: '/contact/test',
stack: [ [Object] ],
methods: { post: true } } }
意思是身体是空的,但为什么呢
谁能帮我一下吗
提前感谢。您的代码仅显示您使用的是
bodyParser.json()
,但表单提交不是json,而是application/x-www-form-urlencoded
,因此,您必须使用类似的方法,以便提交的表单将正确解析为req.body
:
app.use(bodyParser.urlencoded({ extended: false }));
您可以决定要在中间件中使用哪些选项。Doc是。您可能需要body解析器中间件来为您解析body。您加载了body parser模块,但看起来您并没有实际使用它。如果没有中间件,则正文位于尚未读取的请求流中。@jfriend00我有
app.use(bodyParser.json())代码>不过,这不是在使用它吗?@jfriend00对我来说很糟糕,我想我没有在帖子中发布它…让我编辑一下你不是在发布JSON,你是在发布application/x-www-form-urlencoded
数据。您还需要,只需使用var data=$('form').serialize()
app.use(bodyParser.urlencoded({ extended: false }));