Nodejs and Expressjs sending ajax post request



我在http://localhost:1111/user/create中发送帖子数据时遇到问题。 我正在使用Expressjs框架和Redis作为我的数据库。主要问题是它在我的客户端中没有获得文本框的值,并且在发送帖子数据后,Redis 中字段的所有值都是未定义的。我不知道这里出了什么问题,但这是我的代码:

app.post服务器.js

app.post('/user/create', function(req, res) {
    var user = req.body.user;
    var pass = req.body.pass;
    var name = req.body.name;
    var email = req.body.email;
    return client.hmset('username:' + user, 'password', pass, 'name', name, 'email', email,
            function(err, data) {
                if (!err) {
                    return res.send(data);
                    return console.log(data);
                } else {
                    return console.log(err);
                }
            });
});

以下是有关如何发送帖子数据的 jquery:

<script type="text/javascript">
            $("#createbutton").submit(function(event) {
                event.preventDefault();
                var data = {};
                data.name = $('#nameinput').val();
                data.email = $('#emailinput').val();
                data.username = $('#usernameinput').val();
                data.password = $('#passwordinput').val();
                JSON.stringify(data);
                console.log(data);
                $.ajax({
                    type: 'POST',
                    url: 'http://localhost:1111/user/create',
                    data: {data},
                    dataType: 'application/json',
                    success: function(data) {
                        console.log('success');
                        console.log(data);
                    }
                });
            });
        </script>

我已经检查了客户端和服务器,但无法弄清楚错误是什么。提前感谢伙计们。

您的数据变量是错误的,请将您的 js 代码更改为下面并尝试一次:

<script type="text/javascript">
            $("#createbutton").submit(function(event) {
                event.preventDefault();
                var data = {};
                data.name = $('#nameinput').val();
                data.email = $('#emailinput').val();
                data.user = $('#usernameinput').val();
                data.pass = $('#passwordinput').val();
                $.ajax({
                    type: 'POST',
                    url: 'http://localhost:1111/user/create',
                    data: data,
                    dataType: 'application/json',
                    success: function(data) {
                        console.log('success');
                        console.log(data);
                    }
                });
            });
        </script>

您需要使用 bodyParser 中间件来访问发布变量。此中间件获取原始发布数据,并将值分配给 req.body 对象。检查 http://expressjs.com/api.html#bodyParser

app.use(express.bodyParser());
我不知道

expressjs但你可以尝试从这里改变你的dataType

dataType: 'application/json'

自:

dataType: 'json'

最新更新