我已检查我的data
是否已正确传递,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>
至于我的ajax电话
$('.contact-btn').on('click', function (e) {
e.preventDefault();
var data = {
'name': $('input[name="name"]').val(),
'email': $('input[name="email"]').val(),
'subject': $('input[name="subject"]').val(),
'body': $('textarea[name="body"]').val()
}
console.log(data);
$.ajax({
method : "POST",
url: '/contact/test',
dataType: "json",
data: {'name': 'testingaodk'}, // I added this to give it a direct test ( I was using data:data
success: function (data) {
console.log(data);
},
error: function (err) {
console.log(err);
}
})
})
在我的快递中
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);
});
});
在我的console.log中,我确实看到data
已成功传回,并传回了随机id
。
此外,在快速控制台中,我可以看到类似这样的内容
locals: {} },
body: {},
route:
Route {
path: '/contact/test',
stack: [ [Object] ],
methods: { post: true } } }
意思是身体是空的,但为什么呢?
有人可以帮我一把吗?
提前致谢。
答案 0 :(得分:0)
您的代码只显示您使用bodyParser.json()
,但表单提交不是JSON,而是application/x-www-form-urlencoded
因此,您必须使用这样的内容,以便将提交的表单正确解析为{{ 1}}:
req.body
您可以决定要将哪些选项与中间件一起使用。 Doc是here。