我在http://localhost:1111/user/create
发送帖子数据时遇到问题。我正在使用Expressjs框架和Redis作为我的数据库。主要问题是它没有在我的客户端获取文本框的值,并且在发送post数据后,redis中字段的所有值都是未定义的。我不知道这里有什么问题,但这是我的代码:
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>
我已经检查过客户端和服务器,但我无法弄清楚错误是什么。先谢谢你们。
答案 0 :(得分:2)
您的数据变量错误,请将您的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());
答案 1 :(得分:-4)
我不知道expressjs
,但您可以尝试更改dataType
:
dataType: 'application/json'
为:
dataType: 'json'