Nodejs和Expressjs发送ajax post请求

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

server.js中的 app.post

 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> 

我已经检查了客户端和服务器,但我无法弄清楚错误是什么。 在此先感谢家伙。

你的数据variables是错误的,把你的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中间件来访问postvariables。 这个中间件获取原始的post数据并将值赋给req.body对象。 检查http://expressjs.com/api.html#bodyParser

 app.use(express.bodyParser()); 

我不知道expressjs但你可以尝试改变你的dataType

 dataType: 'application/json' 

至:

 dataType: 'json'