尝试从带有一些数据的 ejs 文件发送 post 请求到 express 服务器,但 req.body 返回未定义

Trying to send post request from ejs file with some data to express server but req.body is returning undefined

我正在使用 jquery ajax 向我的服务器发送 post 请求以及一些将包含在我的数据库中的数据。 post 对象在我的 ejs 文件的脚本中定义。

<script>
        const button = document.getElementById('started');

        button.addEventListener("click", (e) => {
            e.preventDefault();
            var post = {};

            if (button.innerHTML === "Start Task") {
                button.innerHTML = "End Task";
                localStorage.startTime = new Date();
            }

            else if (button.innerHTML === "End Task") {
                button.innerHTML = "Submit";
                localStorage.endTime = new Date();
            }

            else if (button.textContent === "Submit") {
                post.title = $('#title').val();
                post.desc = $('#desc').val();
                post.startTime = Date.parse(localStorage.startTime);
                post.endTime = Date.parse(localStorage.endTime);

                console.log(post); //Here, the post object is defined

                $.ajax({ url: '/home', type: 'POST', data: post })
                    .then(res => console.log("successfully posted"))
                    .catch(err => console.log("error", err));
            }
        });
</script>

这是我处理 post 请求的路由

app.post("/home", (req, res) => {
    Posts.create(req.body.post, (err, done) => {
        if (err) {
            console.log("Error occured while posting to home", err);
            res.redirect("/home");
        } else {
            console.log("Task Added", req.body.post, done);
            res.redirect("/home");
        }
    })
});

此处,req.body.post 由于某种原因未定义。另外,我设置了 bodyparser,所以这不是问题。我的 ajax 请求有问题吗?

我相信您可以使用 req.body 访问数据。但是如果你想要 .post 属性,请将你的 ajax 数据参数更改为如下内容:

$.ajax({ url: '/home', type: 'POST', data: {post:post} })