Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的特快专递在请求正文中是空白的?nodejs_Javascript_Node.js_Ajax_Express_Post - Fatal编程技术网

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 }));