Javascript 我试图使用AJAX通过表单发送一些值(数据),但req.body始终为空或值未定义

Javascript 我试图使用AJAX通过表单发送一些值(数据),但req.body始终为空或值未定义,javascript,ajax,node.js,ejs,Javascript,Ajax,Node.js,Ejs,我试图使用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('/t

我试图使用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解析器无法解析主体的原因。更多信息:

更新

当您以
multipart/formdata
的形式发送post数据时,您需要
multer
node.js

var multer = require('multer')
var upload = multer();

app.post('/add', upload.array(), function (req, res) {
    console.log(req.body);
});

尝试使用
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解析器无法解析主体的原因。更多信息:

更新

当您以
multipart/formdata
的形式发送post数据时,您需要
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

使用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.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>

输入电子邮件
输入名称
发送

//这在客户端

<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.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>

输入电子邮件
输入名称
发送

@amine\u detter你能把你的代码放进去吗?@nayeri这是我的代码,非常感谢@amine\u detter你能把你的代码放进去吗?@nayeri这是我的代码,非常感谢,谢谢,但不起作用。此url的更改帮助您感谢您,但不起作用。这个url的更改帮助您可以共享您的客户端代码吗?您是如何发送此ajax请求的?这是代码,非常感谢。好的,我已相应地更新了我的答案。@Adam谢谢,它正在工作。您可以共享您的客户端代码吗?如何发送此ajax请求?这是代码,非常感谢。好的,我已经相应地更新了我的答案。@Adam谢谢,它正在工作